给定代码:
var AllItems = new List<CartItem>();
using(var db = new MainContext())
{
foreach (var item in AllItems)
{
if (!db.tblStoreItems.Where(i => i.ID == item.ItemID).Any())
{
AllItems.Remove(item);
}
}
}
这是从循环对象中删除List对象的最佳方法吗?
最佳答案
循环方法有很多问题,主要是-您无法从当前正在使用foreach
进行迭代的集合中删除项目-您将获得异常。
由于您的主要集合是List<T>
,因此您应该使用包含谓词的 RemoveAll
方法。您还应该像这样简化查询:
AllItems.RemoveAll(item => !db.tblStoreItems.Any(i => i.ID == item.ItemID));