linq中Where和Join的区别是什么?

时间:2010-06-10 09:06:52

标签: linq join where

这两个查询之间有什么区别?他们是完全平等的?

from order in myDB.OrdersSet
    from person in myDB.PersonSet
    from product in myDB.ProductSet
    where order.Persons_Id==person.Id && order.Products_Id==product.Id
    select new { order.Id, person.Name, person.SurName,  product.Model,UrunAdı=product.Name };

from order in myDB.OrdersSet
    join person in myDB.PersonSet on order.Persons_Id equals person.Id
    join product in myDB.ProductSet on order.Products_Id equals product.Id
    select new { order.Id, person.Name, person.SurName,  product.Model,UrunAdı=product.Name };

2 个答案:

答案 0 :(得分:5)

最终结果应该是相同的。

但使用JOIN更清楚 - 你正在做的事情更明显(加入三组数据)。

我个人的“最佳实践”方法是:

  • 使用WHERE来减少和限制返回的行数 - 它通常限制一组数据(通过定义一些要满足的标准)

  • 使用JOIN来表达在一个公共字段(或一组字段)上将两个表/数据集连接在一起的意图

答案 1 :(得分:1)

Join显示表清除之间的关系以及更少的击键。