2016-09-12 2 views
0

다음 열거 형 항목을 반환하는 우아한 방법을 찾고 있습니다.Linq를 통해 조건부를 적용한 후 다음 열거 항목 가져 오기

IEnumerable<int> collection = new List<int>{1,2,3,4,5,6,7,8,9,10}; 

그리고이 술어 :

Func<int,bool> pred = i => i == 5; 

내가 술어를 실행하고 다음 항목을 얻으려면

의 내가이 컬렉션 있다고 가정 해 봅시다. 이 같은 방법을 사용하고 싶습니다 : 나는 (GetEnumeratorMoveNext를 통해)를 코딩하는 방법에는 여러 가지가 알고

var item = collection.GetNextItem(pred); // 6 

을하지만 이미 않는 Linq에 방법이 궁금 해서요, 또는 어떤 다른 우아한 Linq 속임수.

답변

3

당신은 SkipWhile를 사용할 수 있습니다

var item = collection.SkipWhile(i => i != 5).Skip(1).First(); 

이 다음하지 일치 술어을 모든 항목을 생략 한 매칭을 건너 뛰고 다음 나머지 항목의 첫 번째 걸립니다.

pred이 미리 정의되어 당신이 그것을 변경할 수 있습니다, 당신은 그런 SkipWhile 호출 할 수있는 경우 :

var item = collection.SkipWhile(i => !pred(i)).Skip(1).First(); 
관련 문제