如何从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;
    }

如果上述方法找到了购买商品,则返回一个对象,否则返回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,就足以返回false或true或项主键。