1. 程式人生 > 其它 >[Linq].NET/C#程式開發中使用Linq在不建立新物件的情況下如何修改集合元素中的某個指定屬性的值?

[Linq].NET/C#程式開發中使用Linq在不建立新物件的情況下如何修改集合元素中的某個指定屬性的值?

問題描述

如題,在.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; })

方案三

使用LinqAll方法修改屬性的值,如:

登入後複製
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);

版權宣告:本作品系原創,版權歸碼友網所有,如未經許可,禁止任何形式轉載,違者必究。