use*_*420 29 c# linq asp.net linq-group
我想用linq(对象列表)进行查询,我真的不知道怎么做,我可以做组和总和但不能选择其余的字段.例:
ID Value Name Category
1 5 Name1 Category1
1 7 Name1 Category1
2 1 Name2 Category2
3 6 Name3 Category3
3 2 Name3 Category3
Run Code Online (Sandbox Code Playgroud)
我希望按ID分组,按值按SUM分组并返回所有这样的字段.
ID Value Name Category
1 12 Name1 Category1
2 1 Name2 Category2
3 8 Name3 Category3
Run Code Online (Sandbox Code Playgroud)
Dia*_*ita 71
更新:如果您尝试避免对所有字段进行分组,则可以按Id
以下方式分组:
data.GroupBy(d => d.Id)
.Select(
g => new
{
Key = g.Key,
Value = g.Sum(s => s.Value),
Name = g.First().Name,
Category = g.First().Category
});
Run Code Online (Sandbox Code Playgroud)
但是这段代码假设每个Id
,相同Name
并Category
适用.如果是这样,你应该考虑正常化,因为@Aron建议.它意味着保持Id
并Value
在一个类中移动Name
,Category
(以及相同的其他任何字段Id
对于另一个类),同时也有Id
参考.规范化过程减少了数据冗余和依赖性.