2013-06-18 6 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

Смежные вопросы