【问题标题】:Differences between query using LINQ and IQueryable interface directly?直接使用 LINQ 和 IQueryable 接口的查询之间的区别?
【发布时间】:2010-12-31 21:47:36
【问题描述】:

使用 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 实例,因此在调用 ToList() 之类的东西之前,查询不会到达服务器,对吧?区别在于纯粹的可读性,还是在后端使用了根本不同的技术?

【问题讨论】:

    标签: linq entity-framework iqueryable


    【解决方案1】:

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

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

    这两种方法的主要区别实际上只是您使用了不同的语法,并且您分配给一个临时变量(查询)而不是直接返回结果。但是,就所有实际目的而言,它们是相同的。

    【讨论】:

    • 谢谢,我认为可能是这样,但想确定一下。
    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2016-12-05
    • 2018-07-09
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多