c#List移除列表中的元素

对于一个List<T>对象来说移除其中的元素是常用的功能。自己总结了一下,列出自己所知的几种方法。

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             try
 6             {
 7                 List<Student> studentList = new List<Student>();
 8                 for (int i = 0; i < 10; i++)
 9                 {
10                     Student s = new Student()
11                     {
12                         Age = 10,
13                         Name = "John"
14                     };
15                     studentList.Add(s);
16                 }
17                 studentList.Add(new Student("rose",9));
18                 studentList.Add(new Student("rose", 10));
19                 studentList.Add(new Student("rose", 11));
20 
21                22                 31                 40                 //不能用foreach进行删除列表元素的操作,因为这种删除方式破坏了索引
41                 //foreach (var testInt in studentList)
42                 //{
43                 //    if (testInt.Age == 10)
44                 //        studentList.Remove(testInt);
45                 //}
46                 Console.Read();
47             }
48             catch (Exception)
49             {
50 
51                 throw;
52             }
53             
54             
55         }
56     }

 

方法1:for循环倒序移除

//for循环倒序删除
23                 for (int i = studentList.Count - 1; i >= 0; i--)
24                 {
25                     if (studentList[i].Age == 10)
26                     {
27                         studentList.Remove(studentList[i]);
28                         //studentList.RemoveAt(i);
29                     }
30                 }

  

方法2:for循环顺序移除//for循环顺序删除

 

for (int i = 0; i < studentList.Count - 1; )
{
    if (studentList[i].Age==10)
    {
        studentList.Remove(studentList[i]);
    }
    else
    { 
        i++;
    }
}

  

方法3:使用RemoveAll筛选移除

 studentList.RemoveAll((test) => test.Age == 10);//可以用此Linq表达式移除所有符合条件的列表元素

  

方法4:克隆所有非移除元素至一个新的列表中

posted @ 2016-01-26 18:42  蓝萧  阅读(17216)  评论(2编辑  收藏  举报