List里面的某个对象需要修改,赋值
可以使用ALL或者ForEach,All的话,不能直接使用赋值对象只能赋值对象的某个字段
static void Main(string[] args)
{
List<UserData> UserDatas = new List<UserData>
{
new UserData { Id = 1, Name = "小明" },
new UserData { Id = 2, Name = "小红" },
new UserData { Id = 3, Name = "小智" }
};
var userTemp = UserDatas.FirstOrDefault(p => p.Id == 1);
userTemp = new UserData { Id = 4, Name = "测试" };
Console.WriteLine("----------------------------");
Console.WriteLine("查询出来替换后");
foreach (var item in UserDatas)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("替换失败");
// userTemp 只是一个局部变量你修改它是修改不到list的
Console.WriteLine("----------------------------");
Console.WriteLine("使用for循环");
for (int i = 0; i < UserDatas.Count; i++)
{
if (UserDatas[i].Id == 1)
{
UserDatas[i] = new UserData { Id = 4, Name = "for循环测试" };
}
}
foreach (var item in UserDatas)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("----------------------------");
Console.WriteLine("使用all循环 附加对象");
var userTemp1 = new UserData { Id = 3, Name = "all循环附加对象" };
UserDatas.Where(p => p.Id == 3).All(l => { l = userTemp1; return true; }); // 直接赋值对象是修改不了
foreach (var item in UserDatas)
{
Console.WriteLine(item.Id);
Console.WriteLine(item.Name);
}
Console.WriteLine("----------------------------");
Console.WriteLine("使用all循环 赋值");
UserDatas.Where(p => p.Id == 3).All(l => { l.Id = 3; l.Name = "all循环赋值"; return true; });
foreach (var item in UserDatas)
{
Console.WriteLine(item.Id);
Console.WriteLine(item.Name);
}
Console.WriteLine("----------------------------");
Console.WriteLine("使用ForEach循环");
UserDatas.ForEach(p =>
{
if (p.Id == 3)
{
p.Name = "ForEach循环赋值";
}
});
foreach (var item in UserDatas)
{
Console.WriteLine(item.Name);
}
Console.ReadLine();
}
public class UserData
{
public int Id { get; set; }
public string Name { get; set; }
}
}
结果:
----------------------------
查询出来替换后
小明
小红
小智
替换失败
----------------------------
使用for循环
for循环测试
小红
小智
----------------------------
使用all循环 附加对象
4
for循环测试
2
小红
3
小智
----------------------------
使用all循环 赋值
4
for循环测试
2
小红
3
all循环赋值
----------------------------
使用ForEach循环
for循环测试
小红
ForEach循环赋值