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 關注
- 708 瀏覽
添加回答
舉報