問題描述
如題,在.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);
版權聲明:本作品系原創,版權歸碼友網所有,如未經許可,禁止任何形式轉載,違者必究。