给定代码:

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));

10-08 06:03