我有一個linq查詢,我需要做左連接而不是內連接。我看到的所有例子都只顯示了1個左連接,但是當我用2嘗試它時,我無法正確識別它。那麼這個更改如何使用2個左連接?使用linq左連接2個表
ruleSets = (from rs in db.RuleSets
join brs in db.BatchRuleSets on rs.ID equals brs.RuleSetID
join b in db.Batches on brs.BatchID equals b.id
where !clientId.HasValue || b.ClientID == clientId.Value
where !batchId.HasValue || brs.BatchID == batchId.Value
select new
{
rs.ID,
rs.Description,
rs.IsActive,
rs.CreatedDate,
rs.EffectiveDate,
rs.ExpirationDate,
BatchName = b.FileName,
b.ClientID
}).ToList().Select(x => new {
x.ID,
x.Description,
x.IsActive,
x.CreatedDate,
x.EffectiveDate,
x.ExpirationDate,
x.BatchName,
ClientName = GetClientName(x.ClientID)});
Whar呃你得到了嗎? –
我沒有得到一個錯誤,我只是想要所有的記錄,無論有沒有BatchRuleSet或批次 –
你爲什麼選擇,然後調用'ToList()',然後再次選擇?首先'ToList()'實際上並沒有做任何事情,因爲第二個選擇將它重新設置爲IEnumerable,其次你可以在第一個選擇中完成整個變換 –