Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用列表修改C中属性的值#_C#_Asp.net_List_Generics - Fatal编程技术网

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();