选择多个字段分组依据和总和

2024-03-12

我想用 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

我想按 ID 分组,按值求和并返回所有这样的字段。

ID  Value     Name   Category
1   12        Name1  Category1  
2   1         Name2  Category2
3   8         Name3  Category3

更新 : 如果您试图避免对所有字段进行分组,您可以仅按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 
        });

但这段代码假设对于每个Id, 相同Name and Category申请。如果是这样,您应该考虑按照@Aron 的建议进行标准化。这意味着保留Id and Value在一节课中并移动Name, Category(以及对于相同的其他字段是相同的Id)到另一个班级,同时也有Id以供参考。规范化过程减少了数据冗余和依赖性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择多个字段分组依据和总和 的相关文章