Подсчет с использованием группы Linq
У меня есть объект, который выглядит так:
Notice
{
string Name,
string Address
}
В List<Notice>
я хочу вывести все различное имя и сколько раз конкретное появляется в коллекции.
Например:
Notice1.Name="Travel"
Notice2.Name="Travel"
Notice3.Name="PTO"
Notice4.Name="Direct"
Мне нужен вывод
Travel - 2
PTO - 1
Direct -1
Я могу получить отличные имена с этим кодом, но, похоже, я не могу получить счет всех в 1 выражении linq
theNoticeNames= theData.Notices.Select(c => c.ApplicationName).Distinct().ToList();
Ответы
Ответ 1
var noticesGrouped = notices.GroupBy(n => n.Name).
Select(group =>
new
{
NoticeName = group.Key,
Notices = group.ToList(),
Count = group.Count()
});
Ответ 2
Вариант ответа Leniel, используя различную перегрузку GroupBy
:
var query = notices.GroupBy(n => n.Name,
(key, values) => new { Notice = key, Count = values.Count() });
В основном это просто вызывает вызов Select
.