通过变量检查对象是否已经存在

时间:2019-04-30 08:52:26

标签: c# linq casting where

我分配了以下变量,其中x.Item的类型为“对象”

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

say项包含两个值AUTO和ADVANCE。

我有一个CreditCard类型的对象

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

我有一个列表itemsList有信用卡。我想删除那些唯一标识“不在” items集合中的对象。

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

说我在itemsList中有两个CreditCard对象,它们的uniqueId值分别为AUTO和BILL。

由于items仅包含AUTO和ADVANCE,因此应删除具有uniqueId = BILL的CreditCard

我该如何实现?

3 个答案:

答案 0 :(得分:1)

我认为这可行

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

答案 1 :(得分:1)

以下内容适用于任意数量的信用卡序列,不仅适用于List<CreditCard>

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

如果要用此新列表替换原始列表,则:

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

答案 2 :(得分:0)

尝试此代码

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