[Linq].NET/C#程式開發中使用Linq在不建立新物件的情況下如何修改集合元素中的某個指定屬性的值?
阿新 • • 發佈:2021-06-28
問題描述
如題,在.NET/C#程式開發中,使用Linq
在不建立新物件的情況下如何修改集合元素中的某個指定屬性的值?
比如當前有如下的Linq
查詢表示式:
var list = from something in someList
select x // 這裡需要修改某個屬性的值
如何在不建立新的實體物件的情況修改集合someList
中每一項的某個元素的值呢?
方案一
建立一個Linq
查詢來連線查詢,如:
from item in list
let xyz = item.PropertyToChange = calcValue()
select item
方案二
使用Lambda
表示式,如:
var query = someList.Select(x => { x.SomeProp = "foo"; return x; })
方案三
使用Linq
的All
方法修改屬性的值,如:
someList.All(x => { x.SomeProp = "foo"; return true; })
方案四
建立一個靜態擴充套件方法,如:
登入後複製ublic static class UpdateExtension
{
public static IEnumerable<Car> ChangeColorTo(
this IEnumerable<Car> cars, Color color)
{
foreach (Car car in cars)
{
car.Color = color;
yield return car;
}
}
}
然後呼叫這個靜態擴充套件方法,如:
登入後複製cars.Where(car => car.Color == Color.Blue).ChangeColorTo(Color.Red);
版權宣告:本作品系原創,版權歸碼友網所有,如未經許可,禁止任何形式轉載,違者必究。