0

我有一个非常大的自定义类列表。我经常需要仅根据列表中类的自定义值高于或低于特定阈值的元素执行任务。

目前,我做这样的事情:

//Sort the customList by it's X value (sometimes ascending, sometimes descending)
customList.Sort((a, b) => b.X.CompareTo(a.X));

//Iterate through array until the X value is not within the necessary range
for (int i = 0; i < customList.Count; i++)
{
    if (customList[i].X < .5f) break;
    PerformTask(customList[i]);
}

这不是一个很大的瓶颈,但如果我能加快这个应用程序的这种任务,那将是最好的(更不用说我一直想学习这样的东西)。

所以问题是,是否有更快的排序方法而无需自己编写和/或是否有更快的方法在满足特定条件的元素上运行 PerformTask 而无需遍历所有元素?

关于保持列表排序不仅在添加/删除项目时,而且在更改它们排序的值时,我的问题也可能更好。

谢谢,蒂姆

4

1 回答 1

4

排序在这里是错误的方法。这是 O(n log n) 的一个非常有效的算法。使用Enumerable.Where

foreach (var item in customList.Where(n => n.X > 0.5f))
{
    PerformTask(item);
}
于 2013-06-20T17:02:00.863 回答