【问题标题】:Check if object already exist by a variable通过变量检查对象是否已存在
【发布时间】:2019-09-18 21:31:16
【问题描述】:

我有一个如下分配的 var 变量,其中 x.Item 的类型为“对象”

var items = paymentList.Select(x => x.Item).Distinct();

说项目包含,两个值 AUTO 和 ADVANCE。

我有一个 CreditCard 类型的对象

public class CreditCard
{
   public string uniqueId {get; set;}
}

我有一个列表itemsList 有信用卡。我想删除那些 uniqueId“不在”items 集合中的人。

 itemsList.RemoveAll(x => x as ct_CreditCard.uniqueId not in items)

假设我在itemsList 中有两个 CreditCard 对象,其 uniqueId 值为 AUTO 和 BILL。

它应该删除具有 uniqueId = BILL 的 CreditCard,因为 items 仅包含 AUTO 和 ADVANCE

我怎样才能实现它?

【问题讨论】:

  • 你需要的是投射。
  • 试试这个:itemsList.RemoveAll(x => !items.Contains(((ct_CreditCard)x).uniqueId))

标签: c# linq casting where


【解决方案1】:

我认为这可以工作

   itemList.RemoveAll(x => !items.Contains(((ct_CreditCard)x).uniqueId)

【讨论】:

    【解决方案2】:

    以下内容适用于任何可枚举的信用卡序列,不仅适用于List<CreditCard>

    var listWithoutItems = originalList
       .Where(creditCard => !items.Contains(creditCard.UniqueId));
    

    如果您想用这个新列表替换原来的列表:

    originalList = originalList
                   .Where(creditCard => !items.Contains(creditCard.UniqueId))
                   .ToList();
    

    【讨论】:

      【解决方案3】:

      试试这个代码

      itemsList.RemoveAll(crItem => !items.Any(y => y == crItem.uniqueId));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        相关资源
        最近更新 更多