希望找出是否有一种简单的方法来检查列表是否只包含某些列表值。
例如,如果我有一个int列表,可以随机包含不同的整数1-10(即1,3,7或2,3,4,6,8,9),我想检查是否只有列表包含int 1和/或5. 1或5或1,5将返回true,其他任何内容都将返回false。
这实际上是一个MVC项目,是一个字符串列表。根据条件,我构建一个字符串列表,并想检查列表中是否存在2个特定字符串中的1个或两个但没有其他字符串。
现在我拿下列表并检查它是否包含2个字符串中的每一个并删除它们(如果存在)。然后,我可以统计列表,如果> 0我知道一个或两个字符串不是列表中的唯一值。这感觉非常hackish,我认为有更好的方法来做到这一点。同样在将来,如果我的两个字符串是另一个动态的字符串列表,那么有一个简单的方法,而不是必须预先知道两个列表的每个字符串,如果存在于另一个列表中,那么在我可以计算列表之前将其删除我需要的布尔。
希望有类似.Contains(T Item)的东西,比如.OnlyContains(T Item或IEnumerable),但还没有找到类似的东西。
感谢。
答案 0 :(得分:16)
if (someList.Except(desiredItems).Any())
// Uh oh
答案 1 :(得分: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();