LINQ:在IEnumerable中分配属性值
本文关键字:分配 属性 IEnumerable LINQ | 更新日期: 2023-09-27 18:10:33
以下代码段的linq版本是什么:
List<Car> myCarList = ...;
foreach(Car c in myCarList)
{
if(c.Name.Equals("VW Passat"))
{
c.Color = Colors.Silver;
}
}
我试着像这样选择,它工作:
myCarList = myCarList.Where(c=>c.Name.Equals("VW Passat")).Select(c=> new Car(){Color=Colors.Silver, Name=c.Name}).ToList();
但是重新创建对象是很烦人的,特别是当你有很多属性要传递的时候。如何做得更简单?
谢谢
我可以这样写:
foreach (Car c in myCarList.Where(c => c.Name == "VW Passat"))
{
c.Color = Colors.Silver;
}
这里使用LINQ查询执行过滤,但在普通循环中执行更新。您可以编写Enumerable.ForEach
或转换为列表并使用List<T>.ForEach
。但考虑到Enumerable.ForEach
被故意省略,因为这不是LINQ打算如何使用。查看更多详细信息:
-
IEnumerable<T>
的LINQ当量