实体框架查询构建器方法:为什么"它"而不是lambdas?

nla*_*ker 6 c# entity-framework

我刚刚开始使用EF,像下面这样的查询让我觉得很奇怪:

var departmentQuery =
                schoolContext.Departments.Include("Courses").
                OrderBy("it.Name");
Run Code Online (Sandbox Code Playgroud)

具体来说,对我说的是"it.Name".当我使用LINQ to SQL进行工具时,几乎可以使用lambda指定查询构建器查询中的每个过滤器,例如,在这种情况下,d => d.Name.

我看到OrderBy有一些覆盖,它们返回一个返回IOrderedQueryable或IOrderedEnumable的lambda,但是那些显然没有获得可以数据绑定的ObjectResult所需的Execute方法.

毕竟我读过lambdas如何对这种东西如此有意义,以及如何将它们翻译成表达式树然后转换为目标语言,这对我来说似乎很奇怪 - 为什么我需要使用"it.Name" ?

Bri*_*ins 2

我得到了 lamdba 表达式;我可以做Where (it.SomeProperty == 1)...你有System.Linq作为命名空间吗?您可以尝试重组为:

var DepartmentQuery = from d in schoolContext.Departments.Include("课程") orderby d.Name select d;

这些是一些可能性。

HTH。