2011-11-11 4 views
-1

x 개의 객체를 통과해야합니다. 각 객체에는 (int) ID 및 (bool) 완료 필드가 있습니다. ID 필드는 고유합니다. Complete == true 및 연속 ID 필드가있는 객체는 어떻게 찾습니까? 예를 들어, 나는이 조건을 충족 어떤 연속 3 개체를 찾으려면 :이 경우연속적인 항목 찾기

object (ID=1, Complete=true) 
object (ID=2, Complete=true) 
object (ID=3, Complete=false) 
object (ID=4, Complete=true) 
object (ID=5, Complete=true) 
object (ID=6, Complete=false) 

:

object (ID=1, Complete=true) 
object (ID=2, Complete=true) 
object (ID=3, Complete=false) 
object (ID=4, Complete=true) 
object (ID=5, Complete=true) 
object (ID=6, Complete=true) 

위에서을, 나는 개체 4, 5, 6 또 다른 예를 얻어야한다 , Complete == true의 3 개의 연속 객체가 존재하지 않습니다.

답변

1
var triplets = list.Select((item, index) => list.Skip(index).Take(3)); 
var candidates = triplets.Where(triplet => (triplet.Count() == 3) && 
              (triplet.All(item => item.Complete))); 
0

C#에서 내장 메서드가 있다고 생각하지 않지만 이전 두 값의 기록을 유지하는 개체를 반복하는 간단한 경우입니다. prev_val_1 == prev_val_2 == curr_val 일 때 결과를 해당 ID와 함께 인쇄하십시오. 이 같은

+0

이것은 좋은 해결책이다 4, 5, 6 등 연속 값으로 확장하십시오. –

0

뭔가 : 당신이 세 값의 순서를 찾기 위해 이제까지 필요로하지만 당신이하려고하면 신속 손에서 얻을 것이다 경우

from obj in objects 
    let next = obj.FirstOrDefault(t => t.id > obj.id && t.Completed) 
    let nextNext = null == next ? null : objects.FirstOrDefault(t => t.id > next.id && t.Completed) 
    where obj.completed && next != null && nextNext !=null select obj.id, next.id, nextNext.id 
0
var a = myList.Where((q, index) => 
    q.IsDone && 
    index < myList.Count-2 && 
    myList[index+1].IsDone && 
    myList[index+2].IsDone);