C# linq中的分组

C# linq中的分组,c#,list,linq,linq-group,C#,List,Linq,Linq Group,我有以下文件清单: List<DocumentInfo> list1 = new List<DocumentInfo>() { new DocumentInfo { Name = "Customer1", DocCount = 5 }, new DocumentInfo { Name = "Customer1", DocCount = 10 }, new DocumentInfo { Name = "Customer1", DocCount = 5 },

我有以下文件清单:

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 }
};
试试这个:

list1.GroupBy(di => di.Name).Select(g => new DocumentInfo {Name = g.Key, DocCount = g.Sum(dc => dc.DocCount)});
试试这个:

list1.GroupBy(di => di.Name).Select(g => new DocumentInfo {Name = g.Key, DocCount = g.Sum(dc => dc.DocCount)});
像这样尝试

var anotherlist = list1.GroupBy(g => g.Name)
                  .Select(s => new
                  {
                      Name = s.Key,
                      DocCount = s.Sum(i => i.DocCount)
                  });
简单地说,就是通过基于
Name
的分组来获取
DocCount
及其
Name
属性的总和

像这样尝试

var anotherlist = list1.GroupBy(g => g.Name)
                  .Select(s => new
                  {
                      Name = s.Key,
                      DocCount = s.Sum(i => i.DocCount)
                  });
var result= from item in list1
            group item by item.Name
            into g
            select g;
var groupedInfo = result.SelectMany(group => group);
foreach(var g in groupedInfo)
{
     //Do Summation
}

简单地说,就是通过基于
Name
的分组来获取
DocCount
及其
Name
属性的总和

还有另一种方法可以做到这一点

var result= from item in list1
            group item by item.Name
            into g
            select g;
var groupedInfo = result.SelectMany(group => group);
foreach(var g in groupedInfo)
{
     //Do Summation
}
var sumOfDocs = from doc in list1 group doc by doc.Name into g 
                select new { DocName = g.Key, DocSum = g.Sum(i => i.DocCount) };

这里有另一种方法可以做到这一点

var sumOfDocs = from doc in list1 group doc by doc.Name into g 
                select new { DocName = g.Key, DocSum = g.Sum(i => i.DocCount) };