0
這是我的查詢。我想這樣做的LINQ如何正確地在LINQ中進行LEFT JOIN?
SELECT tc.AppId,
tc.ConfigCode,
tc.ConfigId,
tc.ConfigType,
COALESCE(tm.ConfigValue, tc.ConfigValue) AS ConfigValue,
CASE
WHEN tc.ConfigType = 'Application'
THEN tc.AppId
ELSE tm.Id
END as Id,
FROM dbo.Configs tc
LEFT JOIN dbo.ConfigValues tm
ON tc.ConfigId = tm.ConfigId
這裏是我的查詢,我沒有得到正確的結果
db.Configs
.Join(db.ConfigValues.DefaultIfEmpty(), tc => tc.ConfigId, tm => tm.ConfigId, (tc, tm) => new { tc = tc, tm = tm })
.Select(r => new {
AppId = (Guid?)r.tc.AppId,
ConfigCode = r.tc.ConfigCode,
ConfigId = r.tc.ConfigId,
ConfigValue = (r.tm.ConfigValue ?? r.tc.ConfigValue),
Id = (Guid)(r.tc.ConfigType == "Application" ? r.tc.AppId : r.tm.Id),
});
您是否嘗試過使用具有默認值的「左」側的組連接? –
查看msdn網頁:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng