c# – LINQ:在IEnumerable中分配属性值

什么是以下代码片段的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的用途.有关详细信息,请参见此处

> LINQ equivalent of foreach for IEnumerable<T>

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...