考慮以下代碼:如何將此LINQ查詢寫入單個查詢?
var query = from groupRole in CurrentItem.MEMGroupRoles
select groupRole.MEMRole;
this.AvailableRoles = this.allRoles.Except(query.AsEnumerable()).ToList();
在這段代碼中我把allRoles除了CURRENTITEM已經有這些角色。 2個問題:
- 它不工作,因爲我比較對象和這些對象的不同實例
- 我不喜歡2號線,喜歡提高。
這裏是我真正需要的,現在做的僞代碼:
var queryIds = from groupRole in CurrentItem.MEMGroupRoles
select groupRole.MEMRole.RoleId;
this.AvailableRoles = this.allRoles.Except(where RoleId query.AsEnumerable()).ToList();
我如何寫這樣的查詢?
編輯:
解釋:
- allRoles包含MEMRole的對象列表
- CurrentItem.MEMGroupRoles包含MEMGroupRole對象的列表以及每個MEMGroupRole裏面包含
我MEMRole想要選擇除了這些MEMRole以外的所有角色內的所有MEMRole對象s嵌入CurrentItem中。第一個代碼片段可以工作,但是我需要通過MEMRole.RoleId將MEMRole與MEMRole進行比較,因爲它是同一個數據庫實體的不同實例。
你能用英文寫出你想完成的任務嗎?從你的代碼中我不清楚。你應該專注於工作代碼。在正常代碼中,你不應該爭取最少的行數。 – svick
@svick看到編輯後 – katit