3 回答

TA贡献1943条经验 获得超7个赞
如果您使用的是C#3.0,则可以使用linq,效果更好,更优雅:
List<int> myList = GetListOfIntsFromSomewhere();
// This will filter out the list of ints that are > than 7, Where returns an
// IEnumerable<T> so a call to ToList is required to convert back to a List<T>.
List<int> filteredList = myList.Where( x => x > 7).ToList();
如果找不到.Where,则意味着您需要using System.Linq;在文件顶部导入。

TA贡献1757条经验 获得超7个赞
您可以使用IEnumerable消除临时列表的需要。
public IEnumerable<T> GetFilteredItems(IEnumerable<T> collection)
{
foreach (T item in collection)
if (Matches<T>(item))
{
yield return item;
}
}
其中Matches是您的过滤方法的名称。您可以像这样使用:
IEnumerable<MyType> filteredItems = GetFilteredItems(myList);
foreach (MyType item in filteredItems)
{
// do sth with your filtered items
}
这将在需要时调用GetFilteredItems函数,在某些情况下,如果您不使用过滤后的集合中的所有项目,则可能会获得一些良好的性能。
- 3 回答
- 0 关注
- 667 浏览
添加回答
举报