我想用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 中的 Web.config 获取连接字符串

此版本的 SQL Server 不支持用户实例登录标志.连接将关闭

如何使用 javascript 获取 MVC 应用程序的基本 URL

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

.NET 核心 IdentityUser 模型中规范化邮箱和用户名的用途是什么?

如何通过后面的代码不显示

在使用网络服务器加载它们之前,如何编译 Asp.Net Aspx 页面?

asp.net Button OnClick 事件未触发

从 ASP.NET 中的 POST 方法中检索数据

如何设置 CSS 切换器

如何以编程方式将标签的前景色设置为其默认值?

应该如何使用 RedirectToRoute?

Azure Functions 中的 DI

如何在实体框架中添加表?

IIS 8.0 ASP.NET 和错误 500.19

ASP.NET 按钮重定向到另一个页面

IISExpress 找不到使用 Visual Studio 2013 运行 localhost 的 ssl 页面

在.net的内存数据库中

在 Asp.Net MVC 5 中获取登录用户的用户 ID

如何修复 ASP.NET 错误文件 'nnn.aspx' 尚未预编译,无法请求.?