直接使用LINQ和IQueryable接口的查询之间的差异?

时间:2010-12-31 21:47:36

标签: linq entity-framework iqueryable

使用Entity Framework 4,并给出:

ObjectSet<Thing> AllThings = Context.CreateObjectSet<Thing>;

public IQueryable<Thing> ByNameA(String name)
{
    IQueryable<Thing> query =  from o in AllThings 
                               where o.Name == name 
                               select o;
    return query;
}

public IQueryable<Thing> ByNameB(String name)
{
    return AllThings.Where((o) => o.Name == name);
}

两者都返回IQueryable&lt;&gt;实例,因此在调用类似ToList()的内容之前查询不会到达服务器,对吧?纯粹的可读性是不同的,还是在后端使用根本不同的技术?

1 个答案:

答案 0 :(得分:1)

这些编译成几乎完全相同的代码。

第一种语法由编译器直接转换为具有第二种语法中提供的名称的方法。

这两种方法之间的主要区别仅在于您使用的是不同的语法,并且您正在分配临时变量(查询)而不是直接返回结果。但是,出于所有实际目的,它们是相同的。