Rai*_*l24 3 sql linq left-join
我想模仿:
DB1 AS A LEFT OUTER JOIN
DB2 AS B
ON A.[Currency Code] = B.[Currency Code]
AND A.[Document Date] >= B.[Starting Date]
AND A.[Document Date] <= B.[Ending Date]
Run Code Online (Sandbox Code Playgroud)
这就是我现在拥有的:
from ledgers in ledgerEntries
join currency in currencyExchange
on ledgers.CurrencyCode equals currency.CurrencyCode
into c
from currencies in c.DefaultIfEmpty()
where
ledgers.DocumentDate >= currencies.StartingDate
&& ledgers.DocumentDate <= currencies.EndingDate
Run Code Online (Sandbox Code Playgroud)
我已经阅读过有关创建匿名类型并将它们设置为彼此相等的内容,但是当使用小于和大于比较日期时,这不起作用.
看来这个答案就是我想要的.
from ledgers in ledgerEntries
join currency in currencyExchange
on ledgers.CurrencyCode equals currency.CurrencyCode
into c
from currencies in c.Where(currency => currency.StartingDate <= ledgers.DocumentDate
&& currency.EndingDate <= ledgers.DocumentDate).DefaultIfEmpty()
Run Code Online (Sandbox Code Playgroud)
结合这个答案,我能够简化为:
from ledgers in ledgerEntries
from currencies in currencyExchange.Where(
currency => currency.CurrencyCode == ledgers.CurrencyCode
&& currency.StartingDate <= ledgers.DocumentDate
&& currency.EndingDate <= ledgers.DocumentDate).DefaultIfEmpty()
Run Code Online (Sandbox Code Playgroud)