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

Aag*_*nor 7 c# linq list

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

int count = 0;
foreach (IMyObject item in myList)
  if (item == object2Count)
    count++;
Run Code Online (Sandbox Code Playgroud)

我确信这可以通过LINQ更好地完成,但LINQ对我来说仍然是一个谜.

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

先谢谢你,
弗兰克

Mar*_*age 11

您可以使用Count扩展方法轻松计算集合中的对象.或者:

var count = myList.Where(item => item == object2Count).Count();
Run Code Online (Sandbox Code Playgroud)

要么

var count = myList.Count(item => item == object2Count);
Run Code Online (Sandbox Code Playgroud)

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

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