0
我有一個SQL查詢是這樣的:斯普利特從實體框架
select ID,DepartmentID,Code from Department
where code in
(select SUBSTRING(Code, 0, CHARINDEX(',', Code)) from Department as d
inner join DepartmentPersonnel as dp on d.ID = dp.DepartmentID
inner join Personnel as p on dp.PersonneID = p.ID
where UserName='myUsername')
結果這個查詢:
我試圖通過這個查詢得到這個結果EF :
var query = (from dd in db.Departments
where (
from D in db.Departments
join DP in db.DepartmentPersonnels on D.ID equals DP.DepartmentID
join P in db.Personnels on DP.PersonneID equals P.ID
where P.UserName == Username
select D.Code.Split(',').First()).Contains(dd.Code)
select dd).FirstOrDefault();
但我得到這個錯誤:
LINQ to Entities does not recognize the method 'System.String[] Split(Char[])' method, and this method cannot be translated into a store expression.
我讀了很多帖子來解決這個問題,但都沒有解決這個問題。
如果有人能夠解釋這個問題的解決方案,這將是非常有益的。
Thanks.I使用下面的'查詢查詢=(DD從加入 DP在dd.ID db.DepartmentPersonnels等於DP.DepartmentID 在DP.PersonneID等於P.ID 其中P.UserName ==用戶名 選擇dd).FirstOrDefault(); string Code = query.Code.Split(',')[0]; result =(從db.Departments 其中d.Code ==代碼 選擇d).FirstOrDefault();'。是否在性能方面更好? –
嗯,如果子查詢應該返回單個記錄,那麼這是可行的解決方案。表演如何,你必須檢查出來(因爲人們通常說,跑馬:) –