2010-06-10 30 views
0

这2个查询有什么区别?他们是完全平等的?linq中的Where和Join有什么区别?

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 }; 
+0

你为什么把问题标为“实体框架”?也许你在实体框架中使用linq,但这不是一个普通的linq问题。 – erasmus 2010-06-10 09:20:12

+0

是的,我以为你说了什么。我不是专家,我从来没有用过正常的LINQ查询时,我开始学习实体框架,我看到它,并认为连接方法可以依赖于EF.Now我知道它不是EF问题,所以我现在删除该标签。 – Freshblood 2010-06-10 09:37:49

回答

4

最终的结果应该是相同的。

但是使用JOIN更清晰 - 你在做什么更明显(连接三组数据)。

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

  • 使用WHERE,以减少和限制行数返回 - 这是典型的限制一组数据(通过定义某些条件得到满足)

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

1

联接显示表清除器之间的关系,并且用较少的击键。

+0

这符合LINQ的理念:更喜欢代码清晰度和执行速度。特别是当更清晰的代码没有速度损失时,当然是:-) – Gorpik 2010-06-10 09:22:43

+0

这些清晰度可能会导致如我问的这样的问题。因为如果加入的所有工作都在哪里,那么它们之间的区别是什么。如果没有区别为什么连接存在:) – Freshblood 2010-06-10 09:40:43

+0

清晰度是,当你使用连接时,你使用更高的抽象。然而,“其中”是其基础实施。此外,这不是linq有何地方和加入的风格。这是因为sql有他们两个。 – erasmus 2010-06-10 09:56:25

相关问题