选择目的地中尚不存在的全部

时间:2011-12-28 15:28:25

标签: c# linq linq-to-objects

我有一组简单的数组,有点像这样......为了简洁而缩短了结构。基本上它是一个带有附加字段的身份列表(一种字典)。

[
 { 
   "Id" : 1, 
   "Requirement" : { 
     "Value" : "2", "Name" : "Orders" 
    }
 },
 { 
   "Id" : 2, 
   "Requirement" : { 
     "Value" : "4", "Name" : "Orders" 
    }
 },
 { 
   "Id" : 3, 
   "Requirement" : { 
     "Value" : "6", "Name" : "Orders" 
    }
 },
 { 
   "Id" : 4, 
   "Requirement" : { 
     "Value" : "8", "Name" : "Orders" 
    }
 },
]

我需要不断检查这个数组的另一个值,然后拉入满足的项(例如,'user'有一个任意值Orders是一个整数。每次{{ 1}}更新,我想从Orders大于或等于需求值的数组中获取所有项目,但不提取他们已经拥有的值)

那么,这将如下工作...... Orders有1 User。 (什么都没发生) Order有2 User。 (当用户的更新操作运行时,将拉出Id 1) Order然后达到4 User。 (Id 2被拉入,但Id 1已经存在,因此被跳过)

使用LINQ查询是否有一种简单的方法来实现这一目的?我没有存储“最后检查”值的奢侈。数据结构不是我现在可以修改的结构。

2 个答案:

答案 0 :(得分:1)

您可以使用Any方法检查不在另一个数组中的值:

myArray.Where(o => !otherArray.Any(inner => inner.id == o.id));

答案 1 :(得分:1)

Orders.Where(o => o.Requirement.Value > requirment).Except(processedOrders);

首先选择符合要求的Orders,然后使用Except删除已处理的订单。