C# 如何检查一个集合是否只包含来自另一个集合的元素?

C# 如何检查一个集合是否只包含来自另一个集合的元素?,c#,.net,C#,.net,我试图查看我的源集合是否包含只能来自第二个集合的值 比如说 Valid data collection: 1, 2, 5 Source Collection | Result ----------------------------------------- <empty> | true 1 | true 1, 2 | true 1, 2, 5 | true 1, 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)
有效数据收集:1、2、5
源集合|结果
-----------------------------------------
|真的
1 |正确
1,2 |正确
1,2,5 |正确
1,5 |正确
3 |错误(3为非法)
1,3 |错误(3是非法的)
1,2555 |错误(555是非法的)
所以这就像。。如果我的源集合有一些值。。然后,只有当值包含在另一个集合中时,这些值才能存在

呃。很难解释:(

类似

var allInCollection = src.All(x => valid.Contains(x));
或者,如果您更喜欢基于循环的方法:

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

您可以使用
LINQ
之外的方法来检查集合中的任何元素是否不在其他集合中

例如:

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
}
var a=newlist(){1,2,5};
var b=新列表(){1,3};
var c=b,但(a)除外;
如果(c.Any()){//那么它是错误的,b的某些项不在a中
}
这应该可以做到:

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

下次尝试格式化你的代码,我这次是为你做的。