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方法我们可以使用....

c#中修改属性值的泛型列表

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。

快乐编码