的名單說我有一個看起來像這樣簡單的例子,一個實體:使用LINQ to更新屬性在實體
MyEntity
{
int property1;
int property2;
int property3;
}
現在假設我有這方面的entites的IEnumerable
名單。有沒有可以執行的LINQ查詢,將列表中的每個實體的值設置爲property1
?我知道我可以通過foreach來做到這一點,但是想知道LINQ是否可以更優雅地做到這一點。
的名單說我有一個看起來像這樣簡單的例子,一個實體:使用LINQ to更新屬性在實體
MyEntity
{
int property1;
int property2;
int property3;
}
現在假設我有這方面的entites的IEnumerable
名單。有沒有可以執行的LINQ查詢,將列表中的每個實體的值設置爲property1
?我知道我可以通過foreach來做到這一點,但是想知道LINQ是否可以更優雅地做到這一點。
像這樣:
var result = GetMyIEnumerable()
.ToList();
result.ForEach(x => x.property1 = 100);
如果您有100個屬性,反射將是最優雅的。 LINQ的查詢不更新。
要Darin的點,LINQ是專爲查詢。在使用LINQ時,我已經進入了心態,被查詢的對象應該被視爲不可變的。但是,選擇運營商也非常適合轉型。
所以,你可以從一組轉換到另一個如下解決您的問題:
var result = myEntityCollection.Select(e => {
var ret = e;
e.property1 = 100;
return e; });
原來集合中的項目是不變的,但在結果中的項目現在都property1設置爲100
下面是我發現的兩種解決方案。
result = result.Where(x => (x.property1 = 100) == 100).ToList();
或
result = result.Select(c => { c.property1 = 100; return c; }).ToList();
絕對精彩!如此微妙而強大 – 2017-03-24 14:44:21