Linq Dictionary,用于计算数组中项目的计数

时间:2014-01-13 21:47:03

标签: c# linq

我怎样才能从myDict中重新计算其中值(不是键)不在myArray中

private Dictionary<string, int> myDict
int[] myArray = { 1, 2, 3 }

不确定下面是否正确我还没有尝试调试它但我只是猜测它可能无法正常工作

int count = myDict.Count(x => !x.Value.Equals(myArray));

4 个答案:

答案 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