GroupBy和Sum

时间:2013-06-18 21:29:58

标签: c# .net linq

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

我有一个联系人列表,在这个列表中,我想获得状态(显示更多)。

所以我的代码是:

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

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

我该怎么做?

我在考虑这样的事情:

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

提前致谢!

1 个答案:

答案 0 :(得分: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扩展方法来获取组中元素的数量。

相关问题