大于Linq Join中的多个条件

时间:2017-12-07 22:04:50

标签: c# sql-server linq linq-to-sql

我有以下SQL Server查询:

SELECT *
FROM Stock s
LEFT JOIN StockOrderItem soi
    ON s.ItemNumber >= soi.StartNumber
    AND s.ItemNumber < soi.StartNumber + soi.QuantityOrdered

到目前为止我得到的片段

join l1 in _context.StockOrderItems
   on stock.ItemNumber equals l1.StartNumber into StockOrderItemGroup
from StockOrderItem in StockOrderItemGroup.DefaultIfEmpty()

问题在于:我不能使用“等于”,它必须在一个范围内。

如何在“ON”子句中添加多个条件以匹配我的SQL查询?

由于

2 个答案:

答案 0 :(得分:4)

join子句执行的所有连接都是 equijoins 。换句话说,你只能基于两个键相等的匹配。

使用来自子句的化合物,而不是:

var query = from s in Stock 
            from l1 in _context.StockOrderItems
            where s.ItemNumber >= l1.StartNumber
            && s.ItemNumber < l1.StartNumber + l1.QuantityOrdered;

答案 1 :(得分:3)

var query = from s in Stock
            from l1 in _context.StockOrderItems
            where s.ItemNumber >= l1.StartNumber
               && s.ItemNumber < l1.StartNumber + l1.QuantityOrdered
            [...]