[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);

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM