假如有类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--可能不是很好,
不知各位高手有没有好点的算法。
谢谢。
list.Remove(item);
List直接使用Remove(Item)方法,他是通过地址匹配的,不用去比NO了。
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]);
}
}
}
list.Remove(list.Where(s=>s.NO==value).First())