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))
下次尝试格式化你的代码,我这次是为你做的。