Sql 林克;如何在多个条件下执行左外联接?

Sql 林克;如何在多个条件下执行左外联接?,sql,linq,left-join,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] DB1作为左外连接 DB2 AS B A.[货币代码]=B.[货币代码] 和A[文件日期]>=B[开始日期] 和A.[文档日期]=货币。开始日期 &

我试着模仿:

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]
DB1作为左外连接
DB2 AS B
A.[货币代码]=B.[货币代码]
和A[文件日期]>=B[开始日期]
和A.[文档日期]=货币。开始日期
&&ledgers.DocumentDate看来答案就是我想要的

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()
来自分类帐中的分类帐
兑换货币
在分类账上.CurrencyCode等于currency.CurrencyCode
变成c
来自c.Where中的货币(货币=>currency.StartingDate
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()
from ledgers in ledgerEntries
from currencies in currencyExchange.Where(
    currency => currency.CurrencyCode == ledgers.CurrencyCode
    && currency.StartingDate <= ledgers.DocumentDate 
    && currency.EndingDate <= ledgers.DocumentDate).DefaultIfEmpty()