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

但是重新创建对象是很烦人的,特别是当你有很多属性要传递的时候。如何做得更简单?

谢谢

LINQ:在IEnumerable<T>中分配属性值

我可以这样写:

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当量