2013-06-18 68 views
3

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

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

所以我的代码是:

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

在此的GroupBy,我想知道,显得更加的状态(和删除“的情况下”,因为空的状态对我来说并不重要)。

我该怎么做?

我想在这样的事情:

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

提前感谢!

回答

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扩展方法获取组中的元素数。

+0

非常感谢你李!有用!!! – Crasher