假设我有以下课程
public class abc
{
int id;
string name;
}
我使用这个类作为一些数据的集合,我的业务逻辑在其中添加了一些行。
List<abc> lstData = GetData();
现在如果我必须修改一些属性值,我想说我想修改一些值的name属性。
string replaceName = 'jay';
所以这个jay应该在name属性列表的每一行。
怎么做?我认为有一个convertAll方法我们可以使用....
答案 0 :(得分:7)
ConvertAll
通常用于创建新的列表,而听起来您只想修改现有对象中的属性。所以我会用:
foreach (abc value in lstData)
{
value.name = replaceName;
}
(顺便说一下,如果您使用.NET naming conventions之后的名字,这段代码看起来会更加惯用。)
或者,如果您想创建新对象,可以使用ConvertAll
:
List<abc> newList = lstData.ConvertAll(old => new abc {
id = old.id,
name = replaceName
});
这是为委托使用lambda表达式,以及在每个新对象中设置属性的对象初始值设定项。你接近这个问题的确切方法取决于你真正的班级。
答案 1 :(得分:2)
lstData.ForEach(x => x.name = "jay");
答案 2 :(得分:1)
您可以使用以下LINQ运算符ForEach():
lstData.ForEach(data => data.Name = replaceName);
答案 3 :(得分:0)
你的意思是你想要为列表中所有对象的属性分配相同的值吗?如果是,那么你循环它:
foreach (var item in lstData)
{
item.name = "jay";
}
答案 4 :(得分:0)
我认为在现实生活中,当您想要修改Name
时,您必须拥有Id,因此基于此,您可以在列表中找到要修改的单个对象,如:
abc objAbc =(
from emp
in lstData
where emp => emp.Id = someId
select emp)
.SingleOrDefault();
获得objAbc
you can do objAbc.Name = "New Name"
you can do objAbc.Name = "New Name"
后,才能使用linq-to-object。
快乐编码