Linq按多列分组-问题

时间:2019-01-10 15:16:45

标签: c# 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的定义,并且找不到扩展方法OrderNumber接受类型为IGrouping [...]的第一个参数。”

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

谢谢!

2 个答案:

答案 0 :(得分:4)

您必须使用组的Key property

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

答案 1 :(得分:0)

它将是x.Key.OrderNumberx.Key.OrderTotal。阅读帮助中GroupBy的工作方式。