首页 新闻 赞助 找找看

list里面删除元素的算法问题

0
悬赏园豆:20 [已关闭问题]

假如有类A,含有两个属性NO(int),NAME(string)。

现有List<A>,怎样将list里面No为某一值的元素去掉。

 

现有算法1:

        public void RemoveItemFromList2(ref List<A> list, A item)
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].NO == item.NO)
                {
                    list.RemoveAt(i);
                    i--;//如果包含此元素,将其删除并且i减一位
                }
            }
        }

但是感觉这样在循环的时候执行i--可能不是很好,

不知各位高手有没有好点的算法。

谢谢。

liaozh的主页 liaozh | 初学一级 | 园豆:180
提问于:2009-12-21 15:28
< >
分享
其他回答(3)
0

list.Remove(item);

persialee | 园豆:3217 (老鸟四级) | 2009-12-21 16:18
0

List直接使用Remove(Item)方法,他是通过地址匹配的,不用去比NO了。

王焘 | 园豆:240 (菜鸟二级) | 2009-12-22 23:57
0

 public void RemoveItemFromList2(ref List<A> list, A item)
        {

            int count=list.Count;
            for (int i =count ; i >0 ; i--)
            {
                if (list[i-1].NO == item.NO)
                {
                    list.Remove(list[i-1]);                 

                }
            }
        }

tyqing | 园豆:240 (菜鸟二级) | 2009-12-23 10:25
0

list.Remove(list.Where(s=>s.NO==value).First())

天堂口 | 园豆:514 (小虾三级) | 2009-12-23 20:52
list.Remove((From l In list Where l.NO=VALUE Select l).First()),刚才说错了。
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-12-23 20:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册