我返回后续的一些数据:LINQ的重复计数
Model { Guid Id }
和我的全部项目,int totalCount
的一个int。
我想从数据重复计数被返回第1类, 而拥有项目总减去1类计为2类。
我有以下的LINQ to获取第1类的计数不同,但是如何将第2类的计数添加到IEnumerable中?
var result = data.
GroupBy(x => x.Id).
Select(x => new { Category = "1", Value = x.Select(v => v.Id).Distinct().Count() }).
GroupBy(x => x.Category).
Select(x => new Item { Category = x.Key, Value = x.Sum(y => y.Value) });
和Item类有2个成员:类别为字符串,值为小数。
谢谢!
编辑: 所以我有后续数据IEnumerable<Model> data
,它包含以下数据:
{ Id: 1 }
{ Id: 2 }
{ Id: 2 }
{ Id: 1 }
{ Id: 3 }
{ Id: 4 }
和TOTALCOUNT = 10
我想获得的重复计数从数据中获得的Id(在这种情况下为4)作为类别1,而totalCount - 不同的项目为类别2.因此,对于结果,我将有IEnumerable
的Item
具有以下内容:
{ Category: "1", Value: 4 }, { Category: "2", Value: 6 }
现在我的linq语句只返回{ Category: "1", Value: 4 }
,我不知道下一步该怎么做。
我不太明白这个问题。一些简单的示例数据可能会有帮助在您的代码中,Count()方法将始终返回1.您处于按“.Id”分组的项目的上下文中。因此,每组只有一个不同的.Id。 我怀疑你的问题将被解决,如果你按x.Category ==“1”分组。这会给你一个“假”组和一个“真”组,你可以分别区分一个。 – Tormod
谢谢!我只是用一些示例数据编辑了原始问题。希望能帮助到你。 – user1628865