我有一组简单的数组,有点像这样......为了简洁而缩短了结构。基本上它是一个带有附加字段的身份列表(一种字典)。
[
{
"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查询是否有一种简单的方法来实现这一目的?我没有存储“最后检查”值的奢侈。数据结构不是我现在可以修改的结构。
答案 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
删除已处理的订单。