我今天面對這種情況,無法在網上找到我想要的。店內變量linq
看看這段代碼,
myCollection.Select(g => new ReportLine
{
cds = (sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)) != null ?
sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)).USER != null?
sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)).USER.USER_FIRSTNAME : "": "")
+ " " +
(sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)) != null ?
sectors.Where(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)).FirstOrDefault().USER != null?
sectors.Where(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE)).FirstOrDefault().USER.LASTNAME : "" : "")
});
基本上「MyCollection的」是一種深深的類的列表,並申請進入它提取的姓氏和名字,並把它們在其他類而如果檢查有沒有空值。
君不見實現,我查了同樣的事情,6次:
sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE))
(可能是痛苦的性能)
難道一個方式中存在「存儲」在LINQ表達式中的價值?是這樣的:
myCollection.Select(g => new ReportLine
{
cds = ((var tmp =sectors.FirstOrDefault(s => s.SECT_CODE.Equals(g.Contract.Station.Sector.SECT_CODE))) != null ?
tmp.USER != null?
tmp.USER.USER_FIRSTNAME + "" + tmp.USER.LASTNAME: "": "")
});
很確定EF無法正確翻譯。 – Servy
@Servy,爲什麼不呢?那是標準的linq?你的意思是因爲它不能查找'合約',然後'站'和'部門'?如果你問我那不是上述問題的linq,而是EF,如果使用的話,並且他在表達式中有一個真正的嵌套結構。 –