我想對實施IEnumerable
的收集調用FindLast
,但FindLast
僅適用於List
。什麼是最好的解決方案?IEnumerable上的FindLast
回答
相當於:
var last = list.FindLast(predicate);
是
var last = sequence.Where(predicate).LastOrDefault();
(後者則要檢查序列中所有項目,但是......)
有效地,「Where()」是查找部分,「Last()」是「FindLast的最後部分」 「 分別。同樣,FindFirst(predicate)
將映射到sequence.Where(predicate).FirstOrDefault()
和FindAll(predicate)
將是sequence.Where(predicate)
。
使用位於命名空間System.Linq中的擴展方法Last() 。
這並不適用謂詞... – 2009-01-12 15:58:21
您可以將集合添加到新列表,方法是將它傳遞給列表<>構造函數。
List<MyClass> myList = new List<MyClass>(MyCol);
myList.FindLast....
如何使用LINQ到對象:
var item = data.LastOrDefault(x=>x.Whatever == "abc"); // etc
如果你只有C#2,您可以使用一個工具方法來代替:
using System;
using System.Collections.Generic;
static class Program {
static void Main() {
int[] data = { 1, 2, 3, 4, 5, 6 };
int lastOdd = SequenceUtil.Last<int>(
data, delegate(int i) { return (i % 2) == 1; });
}
}
static class SequenceUtil {
public static T Last<T>(IEnumerable<T> data, Predicate<T> predicate) {
T last = default(T);
foreach (T item in data) {
if (predicate(item)) last = item;
}
return last;
}
}
我們能不能把它編輯成雙向飛鏢的答案? – 2009-01-12 15:52:03
你的問題是無效的,因爲集合了沒有最後的元素。具有完整排序的更專業的集合是一個列表。沒有排序的更專業的集合是字典。
- 1. linq findlast和其中的區別
- 2. IEnumerable上的TrySelect
- 3. C#的IEnumerable上<T>
- 4. 擴展方法上的IEnumerable
- 5. IEnumerable包含IEnumerable
- 6. 將IEnumerable <T>與IEnumerable比較IEnumerable <IEnumerable <T>>
- 7. LINQ到IEnumerable的地方孩子的IEnumerable
- 8. IEnumerable上的表達式篩選器
- 9. IEnumerable上的計數<dynamic>
- 10. IEnumerable上的ToList()如何工作?
- 11. LINQ,分組上的IEnumerable <object[]>
- 12. Automapper未能地圖上的IEnumerable
- 13. IEnumerable的模式和在同一頁上
- 14. 獲取的IEnumerable
- 15. 比IEnumerable的
- 16. 訪問的IEnumerable
- 17. CreateMap爲IEnumerable的
- 18. IEnumerable的解釋
- 19. InArgument IEnumerable的
- 20. 生產的IEnumerable
- 21. BeginForm與IEnumerable的
- 22. IEnumerable內的StringBuilder
- 23. IEnumerable和IQueryable的
- 24. json.net IEnumerable的
- 25. LINQ - 在IEnumerable的
- 26. LINQ與IEnumerable的
- 27. IEnumerable的<IEnumerable的<T>>到的IEnumerable <T>使用LINQ
- 28. IEnumerable的到的ListView
- 29. 的foreach與IEnumerable的
- 30. 在的ItemsSource IEnumerable的
根據比較方法,列表的長度和匹配的頻率,它可能更有效率地處理CPU: sequence.Reverse.Where(predicate).FirstOrDefault(); 但是內存效率不高。 – mancaus 2009-01-12 16:51:41