C# 从SQL到数据集的LINQ
将SQL Join语句转换为LINQ to数据集时遇到问题。此外,考虑到LINQ语句中的其他表将连接到标题表。下面是我的加入声明-感谢您的帮助C# 从SQL到数据集的LINQ,c#,sql,linq,linq-to-dataset,C#,Sql,Linq,Linq To Dataset,将SQL Join语句转换为LINQ to数据集时遇到问题。此外,考虑到LINQ语句中的其他表将连接到标题表。下面是我的加入声明-感谢您的帮助 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
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)
来自标题
左连接地址
在标题上。客户=地址。客户
和Header.Company=地址.Company
和((Header.ShipTo='TEMP'和Header.DocNum=Address.ShipTo)
或Header.ShipTo“TEMP”和Header.ShipTo=地址.ShipTo)
在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;
谢谢你,先生!我还要补充一点,稍后这个特定的连接可能需要是一个左连接(shiptos可能不存在),并且在这个LINQ语句中还有其他表连接,那么,有没有办法让WHERE子句只影响上面的join语句,而不影响与其他表的联接呢?我可以通过取出WHERE子句并将其添加到join语句来进行左外联接。然后,我将头表和地址表连接了两次,在where子句中,每个场景一次。