6

リストに特定のリスト値のみが含まれているかどうかを確認する簡単な方法があるかどうかを知りたいと思っていました。

たとえば、個別の int 1 ~ 10 (つまり、1,3,7 または 2,3,4,6,8,9) をランダムに含むことができる int のリストがあり、リストに int 1 のみが含まれているかどうかを確認したい場合1 または 5 または 1,5 は true を返し、それ以外は false を返します。

これは実際には MVC プロジェクト用で、文字列のリストです。条件に基づいて、文字列リストを作成し、2 つの特定の文字列の 1 つまたは両方がリストに存在するが、他の文字列が存在しないかどうかを確認したいと考えています。

今のところ、リストを取得して、2 つの文字列がそれぞれ含まれているかどうかを確認し、存在する場合は削除します。その後、リストを数えることができ、> 0 の場合、1 つまたは両方の文字列がリスト内の唯一の値ではないことがわかります。これは非常にハックな感じがするので、もっと良い方法があると思います。また、将来、私の2つの文字列が文字列の別の動的リストであった場合、リストを数えて取得する前に、両方のリストの各文字列をforeachして別のリストから削除するのではなく、単純な方法があればいいでしょう。私が必要とするブール。

.OnlyContains(T Item または IEnumerable) のような .Contains(T Item) に似たものがあることを望んでいましたが、まだそのようなものは見つかりませんでした。

ありがとう。

4

2 に答える 2

20
if (someList.Except(desiredItems).Any())
    // Uh oh
于 2013-06-14T22:32:27.680 に答える
1

質問を正しく理解していれば、コレクションに別のコレクションのアイテムが含まれているかどうかを知りたいです。使用Enumerable.Intersect:

var ints1 = new[] { 1, 3, 7 };
var ints2 = new [] { 2, 3, 4, 6, 8, 9 };
var list = new[] { 1, 5 };
bool containsAny = ints1.Intersect(list).Any();
Console.WriteLine(containsAny);    // True
containsAny = ints2.Intersect(list).Any();
Console.WriteLine(containsAny);    // False

この要件も含めるには

1,5 のリストまたは要素のないリストも true を返します。

コレクションに要素が含まれているかどうかを確認するだけです。

bool any = list.Any();
于 2013-06-14T22:36:49.637 に答える