2012-07-03 4 views

답변

0

치아의 많은 갊이 있으리라 후, 머리를 당겨 벽에 머리를 두드리는, 나는 내 자신의 반복자를 만드는 쉬운 방법을하기로 결정했다. 완벽하게

public static class LinqExtensions { 
    public static IEnumerable<T> InRange<T>(this IEnumerable<T> list, T first, T last) { 
     int i = 0; 

     while (list.Count() > i && ! list.ElementAt(i).Equals(first)) 
      ++i; 

     while (list.Count() > i && ! list.ElementAt(i).Equals(last)) 
      yield return list.ElementAt(i); 

     if (list.Count() > i && list.ElementAt(i).Equals(last)) 
      yield return list.ElementAt(i); 
    } 
} 

이제 다음 작품 : -

foreach (var x in animals.InRange("bee", "monkey")) { 
    .... 
} 
3

사용 SkipWhileTakeWhile 확장 방법

var myAnimals = animals.SkipWhile(a => a != "bee").TakeWhile(a => a != "monkey").ToList(); 
+1

참고이'monkey' 제외됩니다. –

+0

네, 그 말이 맞아요. 그 생각을 어떻게 바꿀 수 있습니까? – MarcinJuraszek

+0

알파벳순으로 정렬되어 있다면 @MarcinJuraszek ... * TakeWhile (a => a <= "원숭이") * – McGarnagle

관련 문제