정렬 된 일반 목록이 있습니다. 조건과 일치하는 처음 10 개를 반환하고 싶습니다. 아래의 방법 등을일치 항목 수를 반환하는 방법
종류 만 처음 10 개 항목을 다음과 같은
mySortedlist.FindAll(delegate(myclass tmp){ return tmp.ID == 123;});
정렬 된 일반 목록이 있습니다. 조건과 일치하는 처음 10 개를 반환하고 싶습니다. 아래의 방법 등을일치 항목 수를 반환하는 방법
종류 만 처음 10 개 항목을 다음과 같은
mySortedlist.FindAll(delegate(myclass tmp){ return tmp.ID == 123;});
뭔가 :
int count = 0;
mySortedlist.FindAll(delegate(myclass tmp){ return (tmp.ID == 123 && ++count <= 10);});
음, 이미 목록을 반환합니다. 당신은 아주 쉽게 Enumerable.Take
의 자신의 상응을 만들 수 있습니다
public static IEnumerable<T> Take<T>(IEnumerable<T> source, int size)
{
int count = 0;
foreach (T item in source)
{
yield return item;
count++;
if (count == size)
{
yield break;
}
}
}
이 그럼 당신은 사용할 수 있습니다
List<myclass> filtered = mySortedlist.FindAll(delagate(myclass tmp) {
return tmp.ID == 123;
});
List<myclass> list = new List<myclass>(Helper.Take(filtered, 10));
또 다른 옵션은 너무 LINQBridge를 사용하여 가능한 한 많은 LINQ를 사용할 수 있다는 것입니다 - 이상적으로 C#을 사용을 가능하면 .NET 2.0을 목표로 삼을 때도 있습니다. 그것은 당신의 삶을 훨씬 더 단순하게 만들 것입니다.
+1 잘하셨습니다! 좋은 생각 ... – Aliostad
+1, 위임 범위를 사랑해야합니다. ;-) (그리고 까다롭게하지 말고,'delegate() {}'는 맞춤법 검사를해야합니다 .-) –
+1 - 좋은 생각이지만, 신선한 마음으로는 대답하는 것보다 더 많은 질문을 던집니다. – YetAnotherUser