我想用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相关问答推荐

如何在 asp.net 服务器中使用字体

我可以将图像添加到 ASP.NET 按钮吗?

如何在 ASP.NET 中设置自动实现属性的默认值

在 lambda 表达式中否定 Func

如何调试 Azure 500 内部服务器错误

asp.net、url 重写模块和 web.config

ASP.NET Web 应用程序 (.NET Framework) 与 ASP.NET Core Web 应用程序 (.NET Framework) 之间的差异

IIS 中 ASP.net 应用程序的单独应用程序池

将 ASP.NET 成员资格表添加到我自己的现有数据库中,还是应该配置一个单独的 ASP.NET 成员资格数据库?

如何从 RouteData 获取路由名称?

如何将图像 url 转换为 system.drawing.image

如何在 ASP.NET 站点中添加 favicon.ico

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

这个rendersection的代码是什么意思?

如何使div按钮提交其所在的表单?

不同域的登录页面

为什么 HttpWebRequest 会抛出异常而不是返回 HttpStatusCode.NotFound?

如何强制 netwtonsoft json 序列化程序将 datetime 属性序列化为字符串?

ASP.NET Web 窗体中的 jQuery 验证插件

找不到与命令 dotnet-projectmodel-server 匹配的可执行文件