我有两个表Drivers
和ViewDrivers
,我在实体框架6中使用以下lambda表达式连接在一起。
var inAppDriverList = context.ViewDrivers
.Select(dv => new { dv.TerminalCode, dv.EmployeeId })
.Join(
context.Drivers,
d => d.EmployeeId,
dv => dv.EmployeeId,
(d, dv) => new { d, dv }
))
.OrderBy(dv => dv.TerminalCode)
.GroupBy(dv => dv.TerminalCode
.ToList();
它确实为我提供了我期望得到的数据,但是当我尝试使用GroupBy
和OrderBy
对TerminalCode进行排序和分组时,我无法正常工作。我已经尝试了所有我能想到的东西,没有运气。
当我尝试对连接表进行排序时,我只遇到了这个问题,因此我猜测有一些我不知道的小事。我非常感谢帮助将这些语句分组到TerminalCode
字段进行分组和排序。
答案 0 :(得分:2)
Join
的结果将是您使用
(d, dv) => new { d, dv }
因此,当您尝试订购和分组时,您需要一个像
这样的lambdax => x.dv.TerminalCode
那或在匿名类
中指定dv
的值
(d, dv) => new { d, dv.TerminalCode, dv.EmployeeId }
使用该选项,您不需要Select
之前的Join
。此外,如果您不需要Drivers
中的所有列,也可以指定它们,从而减少查询必须返回的数据量。