c#中修改属性值的泛型列表
本文关键字:泛型 列表 属性 修改 | 更新日期: 2023-09-27 18:13:59
假设我有以下类
public class abc
{
int id;
string name;
}
我使用这个类作为一些数据的集合,我的业务逻辑在其中添加了一些行。
List<abc> lstData = GetData();
现在如果我要修改一些属性值比如说我想用一些值来修改name属性
string replaceName = 'jay';
所以这个jay应该在name属性列表的每一行中
如何做到这一点?我想有一个convertAll方法我们可以使用....
ConvertAll
通常用于创建新的列表,而听起来您只是想修改现有对象中的属性。所以我用:
foreach (abc value in lstData)
{
value.name = replaceName;
}
(顺便说一下,如果您使用的名字遵循。net命名约定,那么这段代码看起来会更习惯)
或者,如果您想创建新的对象,可以使用ConvertAll
:
List<abc> newList = lstData.ConvertAll(old => new abc {
id = old.id,
name = replaceName
});
这是对委托使用lambda表达式,并使用对象初始化器来设置每个新对象中的属性。实现这一点的确切方式取决于您的实际类。
使用列表。ForEach
lstData.ForEach(x => x.name = "jay");
您可以使用下面的LINQ操作符ForEach():
lstData.ForEach(data => data.Name = replaceName);
你的意思是你想给列表中所有对象的属性分配相同的值吗?如果是,则循环遍历:
foreach (var item in lstData)
{
item.name = "jay";
}
我认为在现实生活中,当你想修改Name
时,你必须有Id,所以基于此,你可以在列表中找到一个要修改的对象,如:
abc objAbc =(
from emp
in lstData
where emp => emp.Id = someId
select emp)
.SingleOrDefault();
一旦有了objAbc
you can do objAbc.Name = "New Name"
我希望这就是你想知道的。您需要使用System来完成。Linq,以便使用Linq -to-object。
快乐编码