我想用LINQ(对象列表)做一个查询,我真的不知道怎么做,我可以做分组和求和,但不能 Select 字段的睡觉. 示例:

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个都适用相同的NameCategory.如果是这样的话,你应该考虑Aron提出的标准化.这意味着将IdValue保留在一个类中,并将NameCategory(以及任何其他字段对于同一个Id相同)移动到另一个类中,同时也将Id作为参考.标准化过程减少了数据冗余和依赖性.

Asp.net相关问答推荐

页面刷新后如何存储JS Select 数据

InvalidOperationException:在程序集上找不到UserSecretsIdAttribute

无法连接到 ASP.Net 开发服务器问题

ASP.NET 平台是否有与 Heroku 等价的工具?

即使使用正确的 Accepts 标头,WebAPI 也不会返回 XML

Asp.Net 会话在 ashx 文件中为空

如何将 Castle Windsor 与 ASP.Net Web 表单一起使用?

无法让嵌套在 UpdatePanel 中的 WebControl 中的 ScriptManager.RegisterStartupScript 工作

使用 gridview asp.net 进行排序和分页

stream.CopyTo - 文件为空.网

如何在asp.net mvc的html.actionlink中调用javascript函数?

将查询参数绑定到 ASP.NET Core 中的模型

带有 ASP.NET WebMethod 的 Jquery AJAX 返回整个页面

ASP.NET 元:资源键

Asp.Net web 服务:我想返回错误 403 禁止

Twitter Bootstrap 和 ASP.NET GridView

将 html 标记从 jquery 发布调用发送到 asp.net 页面时,从客户端检测到潜在危险的 Request.QueryString 值

解耦 ASP.NET MVC 5 标识以允许实现分层应用程序

如何从 ASP.NET Identity 获取用户列表?

如何检索 X509Store 中的所有证书