2011-12-28 2 views
1

단순한 배열 집합이 있습니다. 이런 식의 구조는 간결하게 구조가 짧습니다. 기본적으로 이것은 추가 필드 (일종의 사전)가있는 ID 목록입니다.모두 대상에 아직 존재하지 않는 것 모두

I 끊임없이이 어레이에 대해 다른 값을 검사하고, 만족되는 항목의 인상해야
[ 
{ 
    "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" 
    } 
}, 
] 

(예를 들어, "사용자"정수 Orders의 임의의 값을 갖는다.마다 Orders 업데이트 나는 User가 있습니다 ... 다음과 같이 일하는 것이, 그래서 다음)이 Orders이 요구 값보다 크거나 같은 배열의 밖으로하지만 이미 값을 끌어없이 모든 항목을 얻을 수

을 원하는 1 Order. (아무 반응 없음) User은 2 Order입니다. (사용자의 업데이트 작업이 실행될 때 ID 1이 당겨집니다) User 그러면 4 Order이됩니다. (Id 2가 끌어 들여지지만 Id 1이 이미 있으므로 건너 뜁니다.)

LINQ 쿼리로이를 수행하는 간단한 방법이 있습니까? 나는 '마지막으로 체크 한'값을 저장하는 사치가 없다. 데이터 구조는이 시점에서 수정할 수있는 것이 아닙니다.

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

답변

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

먼저 다음 이미 처리 된 주문을 제거 Except를 사용하여 요구 사항을 충족 Orders을 선택

+0

감사합니다. 이것은 잘 돌아갔다. 나는 곧 새로운 문제를 발견했다. 그러나 이것은 나의 특정한 질문에 대답했다. 계속되는 질문은 http://stackoverflow.com/questions/8659342/linq-select-all-that-match-a-single-field-merge-on-original에서 끝납니다. – Ciel

1

당신은하지 다른 배열에 값을 확인하기 위해 Any 방법을 사용할 수 있습니다 .

관련 문제