首页 > 解决方案 > Linq 按多列分组 - 问题

问题描述

我似乎遇到了一个可能是非常简单的任务的问题(请原谅我对 linq 和 c# 的新手)。

我想使用 linq 来查询 EF DB 上下文。作为其中的一部分,我想按几列分组,然后将这些结果存储到一个列表对象中。

我目前有这个:

var Orders = orderSqlContext.OrderDetails
                .GroupBy(x => new
                {
                    x.OrderNumber,
                    x.OrderTotal
                })
                .Select(x => new
                {
                    x.OrderNumber,
                    x.OrderTotal
                }).ToList

我最终在上面的“选择”部分的两列中出现错误。

“OrderDetails 不包含 OrderNumber 的定义,并且找不到接受 IGrouping [...] 类型的第一个参数的扩展方法 OrderNumber。”

基本上,OrderDetails 上下文通常会返回一个订单列表,其中包含每个订单项的额外记录。我还想列出该上下文中的不同订单。

谢谢!

标签: c#linq

解决方案


您必须使用组的Key属性

var Orders = orderSqlContext.OrderDetails
    .GroupBy(x => new
    {
        x.OrderNumber,
        x.OrderTotal
    })
    .Select(grp => new
    {
        grp.Key.OrderNumber,
        grp.Key.OrderTotal
    }).ToList();

推荐阅读