如何返回匹配项的计数
本文关键字:何返回 返回 | 更新日期: 2023-09-27 17:56:17
我有一个排序的泛型列表。我想返回符合条件的前 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 - 理想情况下,即使面向 .NET 2.0,如果可能,也可以使用 C# 3。它会让你的生活更简单:)