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

Asp.net相关问答推荐

Windows 命令行中的“/p:”是什么意思

SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

如何在 ASP.Net Core 中验证上传的文件

警告 NETSDK1071 对“Microsoft.AspNetCore.App”的 PackageReference 指定了“2.1.6”版本

ASP.NET Core 2.0 Razor 与 Angular/React/等

如何在 ASP.Net Core Razor 页面上重定向

新的 csproj 文件结构可以与 ASP.NET Framework 项目一起使用吗?

如何在 Visual Studio 2017 中使用 NPM 并安装包?

未指定 authenticationScheme,并且未找到具有默认身份验证和自定义授权的 DefaultChallengeScheme

如何在 Asp.net core 2.0 中使用 log4net

Dotnet core 2.0 身份验证多模式身份 cookie 和 jwt

等价于 ASP.NET Core 中的 Html.RenderAction

ASP.NET添加迁移'复合主键错误'如何使用fluent API

如何在 ASP.NET MVC 中启用跨源请求

ASP.NET Core - 当前上下文中不存在名称“JsonRequestBehavior”

ASP.NET Core Web API 身份验证

找不到与目标运行时之一兼容的框架 .NETCoreApp=v1 的运行时目标

ASP.Net-Core 中的自定义身份验证

指定的 CGI 应用程序遇到错误,服务器终止了进程

ASP.NET 5、EF 7 和 SQLite - SQLite 错误 1:“没有这样的表:博客”