从SQL到数据集

本文关键字:数据集 SQL | 更新日期: 2023-09-27 18:04:27

我在将SQL Join语句转换为LINQ到数据集时遇到了麻烦。另外,考虑到LINQ语句中还有其他表,Header表将被连接到这些表中。下面是我的Join语句-任何帮助都是感激的。

FROM Header
LEFT JOIN Address
ON Header.Customer = Address.Customer
AND Header.Company = Address.Company
AND ((Header.ShipTo = 'TEMP' AND Header.DocNum = Address.ShipTo) 
    OR Header.ShipTo <> 'TEMP' AND Header.ShipTo = Address.ShipTo)

从SQL到数据集

在Linq中执行连接使用Equals()方法。当使用多个列时,您必须创建一个结构相同的匿名类型进行比较。

from h in db.header
join a in db.address
on new { 
         cust = h.Customer, 
         comp = h.Company 
       } 
equals new 
       { 
         cust = a.Customer, 
         comp = a.Company 
       }
where ((h.ShipTo == "TEMP" && h.DocNum == a.ShipTo) 
        || h.ShipTo != "TEMP" && h.ShipTo == a.ShipTo)
select h;