2
我有以下疑問:的Linq工會的SQL代碼都相當於
var majorClients = maj in dbContext.MajorClients
where (maj.startdate > startDate)
where (maj.status == "Active")
Select new Client{EntityPK = maj.mjPrimaryKey,Name = maj.name, Type = "Maj"};
var minorClients = min in dbContext.MinorClients
where (min.startdate > startDate)
where (min.status == "Active" || min.status== "Inactive")
Select new Client{EntityPK = min.mnPrimaryKey,Name = min.name, Type = "Min"};
有可能出現在主要和次要表的客戶。我想返回兩個表中所有客戶端的列表,但是如果按名稱匹配客戶端,那麼我只想從majorClients表中返回匹配的記錄。
我已經寫了一個SQL查詢返回的結果:
SELECT mjPrimaryKey AS EntityPK,name,'Maj' AS TYPE
FROM majorClients
WHERE status = 'Active' AND startDate > @startDate
UNION ALL
SELECT mnPrimaryKey,name,'Min' FROM minorClients
WHERE status IN ('Active','Inactive') AND startDate > @startDate
WHERE name NOT IN (SELECT name FROM majorClients WHERE status = 'Active' AND startDate > @startDate)
我怎麼會代表LINQ此查詢?
感謝您的回覆。當我運行你的代碼時,我得到以下錯誤:LINQ to Entities不支持指定的類型成員'Name'。僅支持初始化程序,實體成員和實體導航屬性。 我認爲它表示新客戶端對象中的「名稱」與數據庫等效名稱無關。 – breakerdotnet
是的,我忘了它。我改變了答案,請再次檢查。 – alexmac
謝謝你的作品。可惜這個查詢運行了兩次,但我明白sql版本也運行了兩次。在這個例子中,我刪除了其他條件爲簡單。添加5個左右的附加條件確實會使讀起來更難一些。無論如何,感謝您的解決方案。 – breakerdotnet