C# 通用列表修改C中属性的值#
假设我有下面的课C# 通用列表修改C中属性的值#,c#,asp.net,list,generics,C#,Asp.net,List,Generics,假设我有下面的课 public class abc { int id; string name; } 我使用这个类作为一些数据的集合,我的业务逻辑在其中附加了一些行 List<abc> lstData = GetData(); 所以这个jay应该在name属性列表的每一行中 如何做到这一点?我认为我们可以使用convertAll方法,它通常用于创建新列表,而听起来您只是想修改现有对象中的属性。所以我会用: foreach (abc value in lstData
public class abc
{
int id;
string name;
}
我使用这个类作为一些数据的集合,我的业务逻辑在其中附加了一些行
List<abc> lstData = GetData();
所以这个jay应该在name属性列表的每一行中
如何做到这一点?我认为我们可以使用convertAll方法,它通常用于创建新列表,而听起来您只是想修改现有对象中的属性。所以我会用:
foreach (abc value in lstData)
{
value.name = replaceName;
}
(顺便说一句,如果在后面使用名称,这段代码看起来会更地道。)
或者,如果要创建新对象,可以使用ConvertAll
:
List newList=lstData.ConvertAll(旧=>newabc{
id=old.id,
name=replaceName
});
这就是为委托使用lambda表达式,并使用对象初始值设定项来设置每个新对象中的属性。实现这一点的确切方式取决于实际类。
ConvertAll
通常用于创建新列表,而听起来您只是想修改现有对象中的属性。所以我会用:
foreach (abc value in lstData)
{
value.name = replaceName;
}
(顺便说一句,如果在后面使用名称,这段代码看起来会更地道。)
或者,如果要创建新对象,可以使用ConvertAll
:
List newList=lstData.ConvertAll(旧=>newabc{
id=old.id,
name=replaceName
});
这就是为委托使用lambda表达式,并使用对象初始值设定项来设置每个新对象中的属性。具体方法取决于实际类。您的意思是要为列表中所有对象的属性指定相同的值吗?如果是,则在其上循环:
foreach (var item in lstData)
{
item.name = "jay";
}
是否要为列表中所有对象的属性指定相同的值?如果是,则在其上循环:
foreach (var item in lstData)
{
item.name = "jay";
}
使用
使用
可以使用以下LINQ运算符ForEach():
可以使用以下LINQ运算符ForEach():
我认为在现实生活中,当你想修改
名称时,你必须有Id,因此基于此,你可以在列表中找到一个要修改的对象,如:
abc objAbc =(
from emp
in lstData
where emp => emp.Id = someId
select emp)
.SingleOrDefault();
一旦你有了objAbc你就可以做objAbc.Name=“New Name”
我希望这就是你想知道的。您需要使用System.Linq
才能使用Linq创建对象
快乐编码我认为在现实生活中,当你想修改
名称
时,你必须有Id,因此基于此,你可以在列表中找到一个要修改的对象,如:
abc objAbc =(
from emp
in lstData
where emp => emp.Id = someId
select emp)
.SingleOrDefault();
一旦你有了objAbc你就可以做objAbc.Name=“New Name”
我希望这就是你想知道的。您需要使用System.Linq才能使用Linq创建对象
快乐编码我想要的是列表的其余属性不应更改,只应在所有行中更改列表的特定属性。在这种情况下,名称应该用任何东西更改,但ID应该保持不变。“这能实现吗?”@ankur:你试过第一段代码了吗?这只是修改列表中所有对象的一个属性;List lst=新列表();getData g=新的getData();对于(inti=0;i<2;i++){g.i=i;g.name=“ank”+i.ToString();lst.Add(g);}string b=“Rahul”;lst.ConvertAll(s=>s.name=b);它正在做这件事。@ankur:但我的回答不是这么说的,是吗?你试过我回答中的任何一种方法吗?我都试过了。我想在修改列表后重新使用它。我使用了您的第二种方法,但没有为相同的方法创建新列表。只是迭代列表并更改值。我想要的是列表的其余属性不应更改,只应在所有行中更改列表的特定属性。在这种情况下,名称应该用任何东西更改,但ID应该保持不变。“这能实现吗?”@ankur:你试过第一段代码了吗?这只是修改列表中所有对象的一个属性;List lst=新列表();getData g=新的getData();对于(inti=0;i<2;i++){g.i=i;g.name=“ank”+i.ToString();lst.Add(g);}string b=“Rahul”;lst.ConvertAll(s=>s.name=b);它正在做这件事。@ankur:但我的回答不是这么说的,是吗?你试过我回答中的任何一种方法吗?我都试过了。我想在修改列表后重新使用它。我使用了你的第二种方法,但没有为相同的方法创建新列表。只是迭代列表并更改值。就我个人而言,我更喜欢使用
foreach
,除非有充分的理由使用foreach
(例如,我已经有了一个代理)。请参阅@乔恩,我有一个主要的C++背景:)从未使用过STD::FoRY,因为C++没有LAMBDAS。所以你可以想象!!顺便说一句,深入阅读你的书。。太神奇了。我选的第一本编程书没有教我如何做for/while循环…至少不是YetGrad你很喜欢它-我非常有意地想写一本书,它一开始并不假设没有知识:)我个人更喜欢使用foreach
,除非有充分的理由使用foreach
(例如,我已经有了一个代表)。请参阅乔恩,我有一个主要的C++背景:)从未使用过STD::FoRY,因为C++没有LAMBDAS。所以你可以想象!!顺便说一句,深入阅读你的书。。太神奇了。我买的第一本编程书没有教我如何做for/while循环…至少不是yetGlad,你很喜欢它-我非常有意地想写一本书,但它没有教我如何做for/while循环
abc objAbc =(
from emp
in lstData
where emp => emp.Id = someId
select emp)
.SingleOrDefault();