实体框架6在连接表上使用Lambda GroupBy

时间:2016-06-17 13:56:48

标签: c# entity-framework lambda

我有两个表DriversViewDrivers,我在实体框架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();

它确实为我提供了我期望得到的数据,但是当我尝试使用GroupByOrderBy对TerminalCode进行排序和分组时,我无法正常工作。我已经尝试了所有我能想到的东西,没有运气。

当我尝试对连接表进行排序时,我只遇到了这个问题,因此我猜测有一些我不知道的小事。我非常感谢帮助将这些语句分组到TerminalCode字段进行分组和排序。

1 个答案:

答案 0 :(得分:2)

Join的结果将是您使用

创建的匿名类的序列
(d, dv) => new { d, dv }

因此,当您尝试订购和分组时,您需要一个像

这样的lambda
x => x.dv.TerminalCode

那或在匿名类

中指定dv的值
(d, dv) => new { d, dv.TerminalCode, dv.EmployeeId  }

使用该选项,您不需要Select之前的Join。此外,如果您不需要Drivers中的所有列,也可以指定它们,从而减少查询必须返回的数据量。