我怎样才能从myDict中重新计算其中值(不是键)不在myArray中
private Dictionary<string, int> myDict
int[] myArray = { 1, 2, 3 }
不确定下面是否正确我还没有尝试调试它但我只是猜测它可能无法正常工作
int count = myDict.Count(x => !x.Value.Equals(myArray));
答案 0 :(得分:5)
var count = myDict.Count(x => !myArray.Contains(x.Value));
答案 1 :(得分:4)
你也可以选择intersection两个馆藏。
var count = myDict.Values.Intersect(myArray).Count();
答案 2 :(得分:1)
两个不同集合中的项目是这两个集合的“交集”。我们可以使用LINQ计算它,然后简单地计算它的大小:
int count = myArray.Intersect(myDict.Values).Count();
通过使用Contains
对其中一个集合进行重复线性搜索,此实现也会更有效。
答案 3 :(得分:0)
您需要在Contains
上使用myArray
查看其中是否有Value
,而不是相反。
int count = myDict.Count(x => !myArray.Contains(x.Value))
您使用的Equals
方法检查对象是否相等。您问x.Value
是否等于myArray
,而不是myArray
中有x.Value
。