我只是想知道我们如何确定是否在join中使用linq to sql
假设我们有两张这样的桌子

Table 1   Customer
          id
          name

Table 2   addresstype
          id
          address1
          customerid


var address = from cu in Customer
              from ad in addresstype
              where cu.id == ad.customerid
              select ad;


var address = from cu in Customer
              join ad in addresstype on cu.id equals ad.customerid
              select de;

两者都是一样的。表演有什么不同吗?
同样是第二种方法,如果没有任何匹配,它是否会出现错误?

最佳答案

基本上,这两个linq查询相当于以下sql查询:

 select ad.*
 from Customer cu, AddressType ad
 where cu.ID == ad.CustomerID -- I assume this was meant by the OP


select ad.*
from Customer cu
  inner join AddressType ad on cu.id = ad.CustomerID;

这两个查询之间的差别主要是语义上的,因为数据库在这两种情况下都会执行相同的操作,并为这两个查询返回相同的结果集。
我更喜欢sql和linq中的join语法,因为它定义了两个表/实体之间的显式关系,这只在无连接版本中隐含。

08-26 00:04