哪里vs加入。哪一个更好用

时间:2012-01-12 08:13:11

标签: c# sql linq-to-entities

目前,我正在运行一些代码,并对此提出了一些疑问。以下是两个LINQ to Entites查询的代码清单。

代码清单A:

IQueryable list = 
    from tableProject in db.Project 
    select new {StaffInCharge = (
        from tableStaff in db.Staff
        where tableStaff.StaffId == tableProject.StaffInChargeId 
        select tableStaff.StaffName)};

代码清单B:

IQueryable list = 
    from tableProjectin db.Project 
    join tableStaff in db.Staff
        on tableProject.StaffInChargeId
        equal tableStaff.StaffId
    select new {StaffInCharge = tableStaff.StaffName};

我想弄清楚,如果我必须从许多其他表中选择许多列,哪一个会更好更快。

感谢。

1 个答案:

答案 0 :(得分:1)

这是来自@Tim Schmelter的评论

“文章(实际上是我的SO-Question)与基于LINQ-To-Objects的LINQ-To-DataSet有关。可以通过DBMS以这种方式优化Linq to SQL或Linq to Entities where子句与连接具有相同的性能。“

,链接是 Why is LINQ JOIN so much faster than linking with WHERE? 我认为它非常有用。