如何更新List里某个对象的属性
我2我骄傲 2016-02-24 11:00:17
比如现在有一个List

public class student{

string name {get;set;}
string adress {get;set;}
}


List<student> s= new student()
{
new student {name ="11111",adress ="22222"},
new student {name ="22222",adress ="22222"},
new student {name ="33333",adress ="22222"}
}

我现在要更新name=22222的 adress 如何更新?
...全文
2651 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
http://yayihouse.com/yayishuwu/chapter/2300
网瘾大叔 2018-06-27
  • 打赏
  • 举报
回复
students.Where(o => o.Name == "22222").ToList().ForEach(r=>r.Adress="00000");
网瘾大叔 2018-06-27
  • 打赏
  • 举报
回复
楼主应该想要的是这个吧。
students.Where(o => o.Name == "22222").ForEach(r=>r.Adress="00000");

学习了。
这个贴是个很好的面试题啊!
钢铁男子 2018-03-12
  • 打赏
  • 举报
回复
改一个对象倒是可以,但是如果多个Name == "22222" 的Adress值都要修改的话就只能循环了, 一个的话students.Where(o => o.Name == "22222").FirstOrDefault().Adress = "00000";
flashwanghuan 2017-05-21
  • 打赏
  • 举报
回复
引用 4 楼 danding_ge 的回复:
我怎么看怎么觉得你这段代码编译不过去。。。
List<student> s= new student()
{
   new student {name ="11111",adress ="22222"},
   new student {name ="22222",adress ="22222"},
   new student {name ="33333",adress ="22222"}
}
正确的写法其实是这样的:
using System.Collections.Generic;
using System.Linq;
        public static void Test()
        {
            var students = new List<Student>()
            {
                new Student {Name = "11111", Adress = "22222"},
                new Student {Name = "22222", Adress = "22222"},
                new Student {Name = "33333", Adress = "22222"}
            };
            var list = students.Where(o => o.Name == "22222").ToList();
            foreach (var student in list)
            {
                student.Adress = "00000";
            }
        }

        private class Student
        {
            public string Name { get; set; }
            public string Adress { get; set; }
        }
感谢!五体投地!!
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
引用 14 楼 danding_ge 的回复:
[quote=引用 12 楼 jmlovews 的回复:] 但是 var list = students.Where(o => o.Name == "22222").ToList(); 这个list 已经跟上面的 students 没关系啦 更新list 为什么把 students 也更新了。。。有点摸不着头脑。
因为new Student {Name = "22222", Adress = "22222"}是一个对象,假设为对象A。 var list = students.Where(o => o.Name == "22222").ToList();这句得到的还是对象A,foreach循环出来的还是对象A,就是一直引用过来的,如果不再执行var 对象A = new Student {Name = "22222", Adress = "22222"},也就是不重新new对象A,那他无论怎么用都是对象A。 你这是没理解对象,概念的东西我也不会讲,去百度吧。[/quote] 3Q
公西雒 2016-02-24
  • 打赏
  • 举报
回复
引用 12 楼 jmlovews 的回复:
但是 var list = students.Where(o => o.Name == "22222").ToList(); 这个list 已经跟上面的 students 没关系啦 更新list 为什么把 students 也更新了。。。有点摸不着头脑。
因为new Student {Name = "22222", Adress = "22222"}是一个对象,假设为对象A。 var list = students.Where(o => o.Name == "22222").ToList();这句得到的还是对象A,foreach循环出来的还是对象A,就是一直引用过来的,如果不再执行var 对象A = new Student {Name = "22222", Adress = "22222"},也就是不重新new对象A,那他无论怎么用都是对象A。 你这是没理解对象,概念的东西我也不会讲,去百度吧。
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
我有点混淆了。。 如果是 方法 就不行。。。必须加ref
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
但是 var list = students.Where(o => o.Name == "22222").ToList(); 这个list 已经跟上面的 students 没关系啦 更新list 为什么把 students 也更新了。。。有点摸不着头脑。
公西雒 2016-02-24
  • 打赏
  • 举报
回复
引用 8 楼 jmlovews 的回复:
你这个能更新到 students 这个list里的 Name = "22222" 这条记录么?
试试就知道了
            //创建Student的List
            var students = new List<Student>()
            {
                new Student {Name = "11111", Adress = "22222"},
                new Student {Name = "22222", Adress = "22222"},
                new Student {Name = "33333", Adress = "22222"}
            };
            //筛选出Name == "22222"的List
            var list = students.Where(o => o.Name == "22222").ToList();
            //更新list中的Adress
            foreach (var student in list)
            {
                student.Adress = "00000";
            }
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
引用 8 楼 jmlovews 的回复:
[quote=引用 4 楼 danding_ge 的回复:] 我怎么看怎么觉得你这段代码编译不过去。。。
List<student> s= new student()
{
   new student {name ="11111",adress ="22222"},
   new student {name ="22222",adress ="22222"},
   new student {name ="33333",adress ="22222"}
}
正确的写法其实是这样的:
using System.Collections.Generic;
using System.Linq;
        public static void Test()
        {
            var students = new List<Student>()
            {
                new Student {Name = "11111", Adress = "22222"},
                new Student {Name = "22222", Adress = "22222"},
                new Student {Name = "33333", Adress = "22222"}
            };
            var list = students.Where(o => o.Name == "22222").ToList();
            foreach (var student in list)
            {
                student.Adress = "00000";
            }
        }

        private class Student
        {
            public string Name { get; set; }
            public string Adress { get; set; }
        }
你这个能更新到 students 这个list里的 Name = "22222" 这条记录么?[/quote] 居然更更新到students 这个list里, 这是为啥
公西雒 2016-02-24
  • 打赏
  • 举报
回复
引用 9 楼 jmlovews 的回复:
居然更更新到students 这个list里, 这是为啥
因为是对象引用过来的,和int,string这种变量是不同的,这是面向对象编程的特点。
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
引用 4 楼 danding_ge 的回复:
我怎么看怎么觉得你这段代码编译不过去。。。
List<student> s= new student()
{
   new student {name ="11111",adress ="22222"},
   new student {name ="22222",adress ="22222"},
   new student {name ="33333",adress ="22222"}
}
正确的写法其实是这样的:
using System.Collections.Generic;
using System.Linq;
        public static void Test()
        {
            var students = new List<Student>()
            {
                new Student {Name = "11111", Adress = "22222"},
                new Student {Name = "22222", Adress = "22222"},
                new Student {Name = "33333", Adress = "22222"}
            };
            var list = students.Where(o => o.Name == "22222").ToList();
            foreach (var student in list)
            {
                student.Adress = "00000";
            }
        }

        private class Student
        {
            public string Name { get; set; }
            public string Adress { get; set; }
        }
你这个能更新到 students 这个list里的 Name = "22222" 这条记录么?
Poopaye 2016-02-24
  • 打赏
  • 举报
回复
引用 6 楼 sibiyellow 的回复:
[quote=引用 5 楼 danding_ge 的回复:] [quote=引用 2 楼 jmlovews 的回复:] 循环的方法就别说了。。。有没有更好的。、 更新list里 实体的属性
为什么不能用循环?即使是底层也是循环实现的。[/quote] +1[/quote] +2
天下如山 2016-02-24
  • 打赏
  • 举报
回复
引用 5 楼 danding_ge 的回复:
[quote=引用 2 楼 jmlovews 的回复:] 循环的方法就别说了。。。有没有更好的。、 更新list里 实体的属性
为什么不能用循环?即使是底层也是循环实现的。[/quote] +1
公西雒 2016-02-24
  • 打赏
  • 举报
回复
引用 2 楼 jmlovews 的回复:
循环的方法就别说了。。。有没有更好的。、 更新list里 实体的属性
为什么不能用循环?即使是底层也是循环实现的。
我2我骄傲 2016-02-24
  • 打赏
  • 举报
回复
没人么啊啊啊啊啊啊
公西雒 2016-02-24
  • 打赏
  • 举报
回复
我怎么看怎么觉得你这段代码编译不过去。。。
List<student> s= new student()
{
   new student {name ="11111",adress ="22222"},
   new student {name ="22222",adress ="22222"},
   new student {name ="33333",adress ="22222"}
}
正确的写法其实是这样的:
using System.Collections.Generic;
using System.Linq;
        public static void Test()
        {
            var students = new List<Student>()
            {
                new Student {Name = "11111", Adress = "22222"},
                new Student {Name = "22222", Adress = "22222"},
                new Student {Name = "33333", Adress = "22222"}
            };
            var list = students.Where(o => o.Name == "22222").ToList();
            foreach (var student in list)
            {
                student.Adress = "00000";
            }
        }

        private class Student
        {
            public string Name { get; set; }
            public string Adress { get; set; }
        }
加载更多回复(2)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧