删除某些对象我有一个cart.Lines列表和要删除所有项目,其中数量== 0LAMBDA或LINQ表达式从列表
这是存放CartLine对象的集合列表:
public class Cart
{
private IList<CartLine> lines = new List<CartLine>();
public IList<CartLine> Lines { get { return lines; } set { lines = value; } }
}
public class CartLine
{
Product Product {get; set;}
int Quantity {get; set;}
}
因此,像:
cart.Lines.RemoveAll(x => x.Quantity == 0)
我只得到删除和RemoveAt移除,不removeall过!
也不能在foreach循环中删除,得到错误: 集合被修改;枚举操作可能不会执行。
我现在设法做到这一点,肯定会有更有效的东西? !
var myList = cart.Lines.ToList();
myList.RemoveAll(x => x.Quantity == 0);
cart.Lines = myList;
好的问题解决了谢谢你们,这在这里做的:(!X => x.Quantity = 0)
cart.Lines = cart.Lines.Where;
它看起来像一个ToList()/ RemoveAll()组合甚至可能是最高效......(见下面的时间表),但是很棒。 ToList()后面的Negative条件的Where()几乎一样快。我认为RemoveAll()对列表进行了非常优化,所以在使用迭代器的其他Linq方法(yield return)方面速度非常快,而这些方法往往会慢一些。 –