我寫的Linq
查詢如下:但是上運行其拋出以下錯誤:OUTER JOIN不是在LINQ查詢工作:方法「加入」不能走法「的SelectMany」或不支持
The method 'Join' cannot follow the method 'SelectMany' or is not supported. Try writing the query in terms of supported methods or call the 'AsEnumerable' or 'ToList' method before calling unsupported methods.
LINQ
from a in AccountSet
join sm in new_schoolMemberSet on a.AccountId equals sm.new_OrganisationId.Id
into ps from suboc in ps.DefaultIfEmpty()
join sr in new_schoolRoleSet on suboc.new_SchoolRoleId.Id equals sr.new_schoolRoleId
where sr.new_name == "Manager"
where a.new_OrganisationType.Value == 430870007
select new { a.AccountId, suboc.new_schoolMemberName }
我期待下面的結果:
我從來沒有使用外前Linq中加入。所以請糾正我,如果我做錯了。
謝謝
嗨,謝謝你的回答。我根據你的建議嘗試過。現在它的含義是'對象引用不會設置爲對象的實例'。我現在還用accountId篩選結果。錯誤時,鏈接板也會突出顯示'suboc'。 – Scorpion
問題是,對於外連接,連接的一側可能爲空。所以當你在ps.DefaultIfEmpty()中編寫suboc時,suboc有可能爲空。當你使用'suboc.new_SchoolRoleId.Id'或'suboc.new_schoolMemberName'時,'suboc'爲null,所以你會得到一個異常。你可以通過做一些類似'suboc == null'的方式來提供默認值。 string.empty:suboc.someProperty'。 – Ocelot20
在這裏看到一些明確的外部連接的例子/鏈接:http://stackoverflow.com/questions/3404975/left-outer-join-in-linq – Ocelot20