c# - 通用列表 FindAll() 与 foreach

标签 c# .net generics

我正在查看通用列表以根据特定参数查找项目。

一般来说,最好和最快的实现是什么?
1. 循环遍历列表中的每个项目并将每个匹配项保存到一个新列表并返回该列表

foreach(string s in list)
{ 
    if(s == "match")
    {
       newList.Add(s);
    }
} 

return newList;

或者
2. 使用 FindAll 方法并将其传递给委托(delegate)。

newList = list.FindAll(delegate(string s){return s == "match";});

他们不是都在 ~ O(N) 内运行吗?这里的最佳做法是什么?

问候, 乔纳森

最佳答案

您绝对应该使用 FindAll 方法,或等效的 LINQ 方法。此外,如果可以(需要 C# 3.0),请考虑使用更简洁的 lambda 而不是委托(delegate):

var list = new List<string>();
var newList = list.FindAll(s => s.Equals("match"));

关于c# - 通用列表 FindAll() 与 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674632/

相关文章:

javascript - 在 Visual Studio 中安装 DataTable Jquery 插件

c# - 获取当前 URL - 当 URL 包含具有多个值的查询字符串时

java - 从抽象父类中的方法返回具体子类的实例

c# - MySql.数据.MySqlClient.MySqlException : Timeout expired

c# - 如何使用 Entity Framework 在 XAF 中实现真正的 Master-Detail?

c# - List<T>.Remove() 如何处理完全相同的对象

.net - 是否有一个.net库用于解析相对网址?

c# - WPF 中的简单弹出对话框(窗口内覆盖)

java - Spring - Autowiring 通用接口(interface)的通用实现

java - 将新对象分配给通用数组索引