【问题标题】:How to remove items from Ilist如何从 Ilist 中删除项目
【发布时间】:2020-11-12 15:42:05
【问题描述】:

我有一个 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);**

【问题讨论】:

  • 请发布重现该问题的示例。 Remove 将根据对象的IComparable&lt;T&gt;(或IComparable)实现删除找到的第一个实例。请注意,类的默认实现是参考比较。您如何检测该项目是否存在? pItemitem之间是什么关系(以及item定义为)?
  • item 是 PurchaseItemViewModel 列表中的 PurhcaseItemViewModel
  • 那么PurchaseItemViewModel是如何实现IComparable&lt;T&gt;的呢?检测项目已存在的代码在哪里?
  • 您是否尝试过更改为 List 而不是 IList,然后当您从 UserSession 中提取项目时,然后调用 ToList()。
  • 很可能您的视图模型没有实现IComparable&lt;T&gt;。因此Remove-方法无法指示两个项目是否相等。因为它找不到任何相等的项目,所以它不会删除任何项目。

标签: c# entity-framework linq .net-core asp.net-core-2.0


【解决方案1】:

使用此代码进行删除:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2017-02-14
    • 2019-05-01
    相关资源
    最近更新 更多