我有一个列表,可以包含同一对象的多次出现。现在我需要计算一下这个列表中包含给定对象的频率。
int count = 0;
foreach (IMyObject item in myList)
if (item == object2Count)
count++;
我确信使用LINQ可以做得更好,但LINQ对我来说仍然是一个谜。
我的第一个问题是:如何通过LINQ计算对象和第二个问题:这个LINQ版本会更慢还是更快?我使用的是ObservableCollection,列表中的项目数量通常相当小......通常不超过20个。
提前致谢,
弗兰克
答案 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)
int count = myList.Count(item => item == object2Count);