我有它返回列表(角色ID,姓名)的方法,我需要將其轉換成一個列表(MyRole有標識,名稱,選擇)如何設置列表元素的屬性與LINQ
var y = x.Roles.Select(r => new MyRole(r.Name, r.Id, false));
好吧,到目前爲止這麼好。但是現在我需要將ID = 123的元素的「selected」屬性更改爲true。這種做法很難實現。
我有它返回列表(角色ID,姓名)的方法,我需要將其轉換成一個列表(MyRole有標識,名稱,選擇)如何設置列表元素的屬性與LINQ
var y = x.Roles.Select(r => new MyRole(r.Name, r.Id, false));
好吧,到目前爲止這麼好。但是現在我需要將ID = 123的元素的「selected」屬性更改爲true。這種做法很難實現。
var y = x.Roles.Select(r => new MyRole(r.Name, r.Id, r.ID == 123));
這是以評估在每次迭代平等的成本,但如果你絕對想擁有一個LINQ查詢之類的非常小的性能損失可能不會打擾你太過分了!
Linq如果對於查詢不是更新。你需要「找到」,那麼合適的對象更新它就像你通常會:
var y = x.Roles.Select(r => new MyRole(r.Name, r.Id, false));
var y123 = y.Single(r => r.Id == 123); // equivalent to Where(...).Single()
y123.Selected = true;
或者你可以用一個條件語句烤到您的投影:
var y = x.Roles.Select(r => new MyRole(r.Name, r.Id, (r.Id == 123) ? true : false));
// the ? true : false is unnecessary, just adding it here to illustrate the check