如何返回匹配项的计数

本文关键字:何返回 返回 | 更新日期: 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。它会让你的生活更简单:)