如何从 Ilist 中删除项目

How to remove items from Ilist

我有一个 IList ,我还有一个方法来检查该项目是否已经在列表中,如果是,我需要将其删除/删除并重新添加。

 private PurchaseItemViewModel CheckSessionPurchaseItemViewModel(long purchaseLevelId)
        {
            bool itemFound = false;
            PurchaseItemViewModel purItem = new  PurchaseItemViewModel();

            foreach (var item in UserSession.UserDataPurchaseItems)
            {
                if (item.PurchaseLevelId == purchaseLevelId)
                {
                    itemFound = true;
                    purItem.Note = item.Note;
                    purItem.PurchaseAmount = item.PurchaseAmount;
                    purItem.PurchaseLevelId = item.PurchaseLevelId;
                }
            }

            if (itemFound)
            {
                return purItem;
            }

            return null;
    }

如果上述方法找到购买项目,那么它 returns 一个对象,否则为 null。

IList<PurchaseItemViewModel> purchaseSessionList = UserSession.UserDataPurchaseItems;
PurchaseItemViewModel pItem = CheckSessionPurchaseItemViewModel(levelId);
if(pItem != null)
{
    purchaseSessionList.Remove(item);
}

所以问题出在下一行,它没有删除项目,甚至没有错误。

**purchaseSessionList.Remove(item);**

使用此代码删除:

if(pItem != null) purchaseSessionList.Remove( purchaseSessionList.SingleOrDefault( s => s.PurchaseLevelId== levelId) );

恕我直言,您不需要创建 pItem,足以 return false 或 true 或项目主键。