Counting Using Group By Linq
55,191
Solution 1
var noticesGrouped = notices.GroupBy(n => n.Name).
Select(group =>
new
{
NoticeName = group.Key,
Notices = group.ToList(),
Count = group.Count()
});
Solution 2
A variation on Leniel's answer, using a different overload of GroupBy
:
var query = notices.GroupBy(n => n.Name,
(key, values) => new { Notice = key, Count = values.Count() });
Basically it just elides the Select
call.
Author by
Nick LaMarca
Updated on October 22, 2020Comments
-
Nick LaMarca over 3 years
I have an object that looks like this:
Notice { string Name, string Address }
In a
List<Notice>
I want to output All distinct Name and how many times the particular appears in the collection.For example:
Notice1.Name="Travel" Notice2.Name="Travel" Notice3.Name="PTO" Notice4.Name="Direct"
I want the output
Travel - 2 PTO - 1 Direct -1
I can get the distinct names fine with this code but I can't seem to get the counts all in 1 linq statement
theNoticeNames= theData.Notices.Select(c => c.ApplicationName).Distinct().ToList();