我试图查看我的源集合是否包含只能来自第二个集合的值。
例如。
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)
所以它就像..如果我的源集合有一些值..那么只有当它们包含在其他集合中时,这些值才会存在。
Urgh。很难解释:(
答案 0 :(得分:7)
像
这样的东西var allInCollection = src.All(x => valid.Contains(x));
或者如果您更喜欢基于循环的方法:
bool result = true;
foreach(var e in src)
{
if (!valid.Contains(e)) result = false;
}
答案 1 :(得分:4)
您可以使用LINQ
Except
检查集合中的任何元素是否不在其他集合中。
例如:
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
}
答案 2 :(得分:1)
这应该这样做:
sourceCollection.All(num => validDataCollection.Contains(num))