Search code examples
c#listlinqlinq-group

Grouping in linq


I have a following list of documents:

List<DocumentInfo> list1 = new List<DocumentInfo>()
{
   new DocumentInfo { Name = "Customer1", DocCount = 5 },
   new DocumentInfo { Name = "Customer1", DocCount = 10 },
   new DocumentInfo { Name = "Customer1", DocCount = 5 },
   new DocumentInfo { Name = "Customer2", DocCount = 4 },
   new DocumentInfo { Name = "Customer2", DocCount = 6 },
   new DocumentInfo { Name = "Customer3", DocCount = 3 }
};

How to group the above list based on 'Name' and sum of 'DocCount' using Linq and store in another list? I want something like following:

Name = "Customer1", DocCount = 20
Name = "Customer2", DocCount = 10
Name = "Customer3", DocCount = 3

Solution

  • var results = list1.GroupBy(i => i.Name)
                       .Select(g => new
                                    {
                                        Name = g.Key,
                                        DocCount = g.Sum(i => i.DocCount)
                                    });