.NET 3.5에서 정식 답은 Take
을 사용하는 것입니다. 다행히, 당신이 .NET 2.0 매우 쉽게 쓸 수 있습니다 :
public static IEnumerable<T> Take<T>(IEnumerable<T> source, int limit)
{
// Error checking omitted
using (IEnumerator<T> iterator = source.GetEnumerator())
{
for (int i = 0; i < limit; i++)
{
if (!iterator.MoveNext())
{
yield break;
}
yield return iterator.Current;
}
}
}
그런 다음 당신이 할 수 있습니다
foreach (SimplifiedFeedItem item in Take(allFeeds, 6))
{
// Do stuff
}
을 다른 방법으로, 당신은 단지 LINQBridge 잡아 가능한 객체에 LINQ의 전체를 가질 수있다 당신에게 ...
이런 식으로 일하는 장점은 결국 .NET 3.5 이상으로 업그레이드 할 때 매우 쉽게 관용적 인 LINQ로 바뀔 수있는 솔루션을 얻을 수 있다는 것입니다.
foreach (SimplifiedFeedItem item in allFeeds.Take(6))
반복기 블록을 사용한 오류 검사는 약간 까다 롭습니다. 인수 검사를 수행하는 "일반"방법을 작성하고 반복기를 개별적으로 호출해야합니다. 그렇지 않으면 반복을 시작할 때까지 예외가 throw되지 않습니다.
+1 매우 우아합니다! –