码迷,mamicode.com
首页 > 其他好文 > 详细

List<> 集合 删除指定行

时间:2016-09-22 18:04:33      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

  不多说,直接上代码

 public class Name
    {
        public string NameInfo { get; set; }
    }

  删除值为Name2的行

 static void Main(string[] args)
        {
            string[] s = new string[2];
            List<Name> nList = new List<Name>();
            for (int i = 0; i < 5; i++)
            {
                Name n = new Name()
                {
                    NameInfo = "Name" + i
                };

                nList.Add(n);
            }
 
            Console.WriteLine();
            var someOne = "Name2";

            for (int i = 0; i < nList.Count; i++)
            {
                if (someOne == nList[i].NameInfo)
                {
                    nList.RemoveAt(i);
                    //输出下一个参数
                    Console.WriteLine(nList[++i].NameInfo);
                }
            }   
        
for (int i =0; i<nList.Count; i++) { Console.Write(nList[i].NameInfo + "\t"); } Console.ReadKey(); }

  仔细的同学会发现一个错误:Name2在nList<Name>是第3个即nList[2],删除之后下一个参数应该是nList[3] Name3,但是最后程序结果是Name4。

  原因:当前元素被删除之后,后面的元素会自动前移一位.也就是删除Name2后nList[2]就变成Name3。

  改进:逆反循环,for循环从后开始往前循环

     for (int i = nList.Count - 1; i >= 0; i--)
            {
                if (someOne == nList[i].NameInfo)
                {
                    nList.RemoveAt(i);
                    //输出下一个参数
                    Console.WriteLine(nList[--i].NameInfo);
                }
            }

 

List<> 集合 删除指定行

标签:

原文地址:http://www.cnblogs.com/codeface/p/5897348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!