使用LINQ计算列表中给定对象的数量

时间:2011-06-20 09:08:58

标签: c# linq list

我有一个列表,可以包含同一对象的多次出现。现在我需要计算一下这个列表中包含给定对象的频率。

int count = 0;
foreach (IMyObject item in myList)
  if (item == object2Count)
    count++;

我确信使用LINQ可以做得更好,但LINQ对我来说仍然是一个谜。

我的第一个问题是:如何通过LINQ计算对象和第二个问题:这个LINQ版本会更慢还是更快?我使用的是ObservableCollection,列表中的项目数量通常相当小......通常不超过20个。

提前致谢,
弗兰克

4 个答案:

答案 0 :(得分:11)

您可以使用Count扩展方法轻松计算集合中的对象。之一:

var count = myList.Where(item => item == object2Count).Count();

var count = myList.Count(item => item == object2Count);

关于性能,它应该与foreach循环相同。

(您的谓词item == object2Count看起来有点奇怪,但这与关于如何计算集合中的对象的问题无关。)

答案 1 :(得分:1)

int count = myList.Count(x => x == object2Count);

答案 2 :(得分:0)

试试这个:

var count = objectlist.Count(x => x == object2Count));

答案 3 :(得分:0)

Look at 101 LINQ Samples

int count = myList.Count(item => item == object2Count);