[英]Linq to Join tables based on date in between
CREATE Table A
(StartDate DATETIME,
EndDate DATETIME,
Price float)
CREATE Table B
(EfectiveDate DATETIME,
Item VARCHAR(50))
INSERT INTO A values ('01/20/2016', '11/12/2017', '2.40')
INSERT INTO A values ('11/13/2017', '03/02/2019', '1.20')
INSERT INTO A values ('03/03/2019', '05/22/2019', '2.20')
INSERT INTO A values ('05/23/2019', '07/23/2019', '1.90')
INSERT INTO B values ('06/21/2019' 'Pen')
INSERT INTO B values ('01/01/2018','Pencil')
我需要將這兩個表結合起來,根據表B中的生效日期,LINQ應該在表A中的StartDate和EndDate之間
就像是 ...
Select * FROM B
INNER JOIN A on B.EfectiveDate BETWEEN A.StartDate AND A.EndDate
要么
from tblB in B
join tblA in A on tblB.B.EfectiveDate BETWEEN tblA.StartDate AND tblA.EndDate
顯然我上面的LINQ查詢是錯誤的,但我希望你明白這個想法。
你不能專門加入BETWEEN
條件
你可以嘗試使用笛卡爾積,然后在適當的條件下過濾:
from tblB in B
from tblA in A
where tblB.EfectiveDate >= tblA.StartDate && tblB.EfectiveDate <= tblA.EndDate
select new {
StartDate = tblA.StartDate,
EndDate = tblA.EndDate,
Price = tblA.Price,
EfectiveDate = tblB.EfectiveDate,
Item = tblB.Item
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.