.NET には、あるリストに別のリストのすべての項目が含まれているかどうかを確認する組み込みメソッドがありますか?
問題:
List かどうかを決定するメソッド (ContainsAllItems) があります。リスト b のすべての要素が含まれます。この機能はすでに .NET に組み込まれており、作業が重複する可能性があるのではないかと疑問に思われるかもしれません。
答え:
はい、.NET 3.5 以降では、続くメソッド:
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
使用法:
List<int> a = new List<int>() { 1, 2, 3, 4 }; List<int> b = new List<int>() { 2, 3 }; bool result = a.ContainsAllItems(b); // True
このメソッドは、b と a の差の設定 (b.Except(a)) を実行し、 a にない b の要素。次に、Any() メソッドを使用して、セットの差分に要素があるかどうかを確認し、その結果を反転して、a に b のすべての項目が含まれているかどうかを判断します。
注:
元の ContainsAllItems メソッドも有効なソリューションですが、LINQ を使用するアプローチよりも効率が若干劣ります。 LINQ バージョンは遅延評価を利用しており、リストに多数の項目がある場合、実行される作業が少なくなる可能性があります。
以上が.NET には、あるリストに別のリストのすべての要素が含まれているかどうかを確認する組み込みの方法が提供されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。