3

我阅读了很多 GroupBy + Sum 主题,但我不明白如何使用它。

我有一个联系人列表,在这个列表中,我想获取状态(出现更多)。

所以我的代码是:

contacts.GroupBy(i => i.Address.State.ToUpperInvariant());

在这个 GroupBy 中,我想知道更多出现的状态(并删除“”的大小写,因为空状态对我来说并不重要)。

我该怎么做?

我在想这样的事情:

contacts.GroupBy(i => i.Address.State.ToUpperInvariant()).Select(i => i.Max());

提前致谢!

4

1 回答 1

6

你想要这样的东西:

var counts = contacts
    .Where(c => c.State != string.Empty)
    .GroupBy(i => i.Address.State, StringComparer.OrdinalIgnoreCase)
    .Select(grp => new { State = grp.Key, Count = grp.Count());

GroupBy返回一个IEnumerable<IGrouping<TKey, TSource>>. 由于IGrouping<TKey, TSource>实现IEnumerable<TSource>了,因此您可以使用Count扩展方法来获取组中的元素数。

于 2013-06-18T21:32:15.687 回答