|
1
274
如果你使用的是C#3.0,你可以使用linq,它更好、更优雅:
如果你找不到
|
|
|
2
21
这是一个使用三种不同方法进行列表过滤的代码块/示例,我将它们组合在一起,展示了基于Lambdas和LINQ的列表过滤。
|
|
3
17
MSDN在这里有一个很好的代码示例: http://msdn.microsoft.com/en-us/library/aa701359(VS.80).aspx
编辑:我在对LINQ和
|
|
|
4
8
您可以使用IEnumerable来消除对临时列表的需求。
其中Matches是您的筛选方法的名称。你可以这样使用:
这将在需要时调用GetFilteredItems函数,在某些情况下,如果您没有使用筛选集合中的所有项目,它可能会提供一些良好的性能提升。 |
|
|
5
4
要就地执行,您可以使用“List<>”类的RemoveAll方法以及自定义的“Predicate”类。..但所做的只是清理代码。..在引擎盖下,它正在做和你一样的事情。..但是,是的,它确实做到了,所以你也要做同样的临时列表。 |
|
|
6
4
|
|
|
7
3
或者,如果你愿意,可以使用C#3编译器提供的特殊查询语法:
|
|
8
3
使用LINQ比使用提供给列表的谓词要慢得多
|
|
|
9
1
如果你的列表很大,并且你正在重复过滤,你可以根据过滤器属性对原始列表进行排序,进行二分查找以找到起点和终点。 初始时间为O(n*log(n)),然后为O(logn)。 标准过滤每次都需要O(n)。 |