如何检查一个集合是否仅包含另一个集合中的元素?(涉及IT技术)

5
我正在尝试查看我的源集合是否包含只能来自第二个集合的值。
例如。
Valid data collection: 1, 2, 5 

Source Collection | Result
-----------------------------------------
<empty>           | true
1                 | true
1, 2              | true
1, 2, 5           | true
1, 5              | true
3                 | false (3 is illegal)
1, 3              | false (3 is illegal)
1, 2, 555         | false (555 is illegal)

所以,如果我的源集合有一些值,那么这些值只能存在于其他集合中。

呃,很难解释:(

3个回答

10

类似于什么

var allInCollection = src.All(x => valid.Contains(x));

或者,如果您更喜欢基于循环的方法:

bool result = true;
foreach(var e in src) 
{
    if (!valid.Contains(e)) result = false;
}

4
你可以使用 LINQExcept 方法来检查一个集合中的任何元素是否不在另一个集合中。
例如:
var a = new List<int>() {1,2,5};
var b = new List<int>() {1,3};
var c = b.Except(a);
if (c.Any()){ //then it is wrong, some items of b is not in a
}

1
这应该可以做到:

sourceCollection.All(num => validDataCollection.Contains(num))

1
下次尝试格式化你的代码,这次我已经为你做了。 - Mafii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接