如何遍历List,删除某个要素或几个要素,你的第一反应是用什么方法实现? foreach? for?
我的做法是用for倒序遍历,根据条件删除
让我们用代码演示http://www.Sina.com/,http://www.Sina.com/如何删除list数据。
class程序{ public class students } public string name { get; set; 公共int age { get; set; }公共students (string name,int age ) { this.Name=name; this.Age=age; }staticvoidmain(string[]args ) liststudentsstulist=new list students ); stulist.add(newstudents('Tom ',20 ); stulist.add(newstudents('Tang ',20 ); stulist.add(newstudents('Tang ',22 ); stu list.add (new students (' trista ',24 ); stulist.add(newstudents(Lili ),25 ); //打印名称Console.Write () (删除前) ); Foreach(varstuinstulist ) console.write ) stu.name ' ); 控制台. read key (; }打印结果: Tom Tang Tang Trista Lili
1、首先在foreach上遍历删除名字为Tang的学生。 代码如下。 Foreach(varstuinstulist ) if ) stu.name=='tang ' ) stu list.remove (stu ); } foreach
2、for正向遍历删除。 代码如下。 //打印名称Console.Write ('删除前) ); Foreach(varstuinstulist ) console.write ) stu.name ' ); //删除名称为Tang的学生for (inti=0; i stuList.Count; I () if ) stulist[I].name=='tang ' ) stulist.remove ) stulist[I]; (/)打印名称console.write ) ) (n删除后() ); Foreach(varstuinstulist ) console.write ) stu.name ' ); 打印结果:
删除前: Tom Tang Tang Trista Lili
删除后: Tom Tang Trista Lili
我只删除了一个名为Tang的学生。 为什么会发生这种事呢?
这是因为,如果i=1,则在满足条件的情况下执行删除操作时,第一个Tang将被删除,然后第二个Tang将移动到第一个Tang的位置。 也就是说,光标1对应于第二个标记。 接着遍历i=2,跳过第二个Tang。
3、用for按相反顺序遍历删除。 代码如下。 for(intI=stulist.count-1; i=0; I--}{if(stulist[I].name=='tang ' ) (stulist.remove ) stulist[I]; }打印结果:
删除前: Tom Tang Tang Trista Lili
删除后: Tom Trista Lili
for
希望这篇文章对你有帮助,抛砖引玉,如果你有更好的方法解决这个问题,请在评论中分享~