我似乎遇到了可能是一个非常简单的任务的问题(请原谅我使用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上下文通常会返回一个订单列表,其中包含每个订单项的额外记录。我还想在这种情况下列出不同的订单。
谢谢!
答案 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.OrderNumber
和x.Key.OrderTotal
。阅读帮助中GroupBy的工作方式。