リスト a にリスト b のすべての項目が含まれているかどうかを確認する組み込み関数が .NET にありますか?
この質問の目的は次のとおりです。 .NET が、あるリストに別のリストのすべての要素が含まれているかどうかを確認する組み込み機能を提供しているかどうかを判断します。
提供されているサンプル コードは、2 番目のリストを反復処理し、各要素が最初のリストに存在するかどうかを確認することで、この目的を達成しようとします。このアプローチは機能しますが、そのような機能が .NET 内にすでに存在するかどうかは疑問です。
回答:
.NET バージョン 3.5 以降では、そのような機能は実際に利用可能です。 :
public static bool ContainsAllItems<T>(List<T> a, List<T> b) { return !b.Except(a).Any(); }
このコードは、リスト b の要素とリスト a の要素を比較し、すべての要素がリスト a の要素である場合にのみ true を返します。 b は a にも存在します。
代替実装:
より従来的な実装では、メソッドをジェネリックとして宣言し、IEnumerable
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
このアプローチを使用すると、次を使用して、あるリストに別のリストのすべての要素が含まれているかどうかを簡単に確認できます:
IEnumerable<int> a = new List<int> { 1, 2, 3, 4 }; IEnumerable<int> b = new List<int> { 2, 4, 6, 8 }; bool containsAll = a.ContainsAllItems(b); // False
以上が.NET には、あるリストに別のリストのすべての項目が含まれているかどうかを確認する組み込み関数が提供されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。