如何在F#中編寫FirstOrDefault Linq查詢? 完全可以在F#中使用linq到sql嗎?F#中的FirstOrDefault#
8
A
回答
12
注意,F#中的更地道的做法會可能是使用沿着Seq.tryFind
的行,而不是使用LINQ運算符,雖然它不是替代品的下降,因爲它返回一個期權價值。
4
關於LINQ到SQL,看到
關於FirstOrDefault
,它只是在System.Linq
命名空間的擴展method:
let l = [1;2;3]
open System.Linq
let r = l.FirstOrDefault()
3
或者,你可以很容易地定義自己的firstordefault:
let firstordefault list =
match list with
| head :: tail -> head
| [] -> 0 // some default value
例子:
let exampleList = [ 1; 2; 3 ]
使用F#互動,
firstordefault exampleList;;
val it : int = 1
7
因爲Seq
模塊已經有一個head
功能類型seq<'a> -> 'a
,在F#中,你通常嘗試使用到aviod`null` -
[1; 2; 3] |> Seq.tryHead
+2
自從'tryHead'(https://github.com/Microsoft/visualfsharp/commit/b10392dc16593bf9286583e2a87217d18fa18b8a)已被添加到F#4.0中。 – 2016-12-30 00:18:55
相關問題
- 1. FirstOrDefault不同的採取FirstOrDefault
- 2. FirstOrDefault Linq中
- 3. LINQ的FirstOrDefault
- 4. FirstOrDefault的性能()
- 5. 在FirstOrDefault()
- 6. LINQ中FirstOrDefault()和FirstOrDefault之間的差異<string>()LINQ
- 7. FirstOrDefault引發的NullReferenceException
- 8. FirstOrDefault()== null?假:真;
- 9. Linq SQL FirstOrDefault
- 10. LINQ Where and FirstOrDefault
- 11. dictionary.TryGetValue vs FirstOrDefault
- 12. 看不到FirstOrDefault
- 13. 多套FirstOrDefault
- 14. 用法與FirstOrDefault
- 15. LINQ FirstOrDefault問題
- 16. C#LINQ FirstOrDefault()
- 17. C#的LINQ凡(表達).FirstorDefault()VS .FirstOrDefault(表達)
- 18. 和FirstOrDefault(func)&Where(func).FirstOrDefault()之間的區別?
- 19. FirstOrDefault()和FirstOrDefault之間的區別<MyClass>()?
- 20. 過濾FirstOrDefault()之前的結果然後使用FirstOrDefault()
- 21. LINQ的SQL腳本中的FirstOrDefault?
- 22. 如何評估Sql中的Firstordefault Linq?
- 23. 將FirstOrDefault添加到我的查詢中?
- 24. FirstOrDefault上不工作
- 25. LINQ FirstOrDefault測試空
- 26. 如何使用FirstOrDefault()?
- 27. 關於FirstOrDefault或SingleOrDefault
- 28. FirstOrDefault()無法與? operator
- 29. FirstOrDefault沒有參數
- 30. LINQ的.FirstOrDefault不工作
我也是會建議使用'Seq.tryFind':使用它作爲
:我會定義一個函數
tryHead
與簽名seq<'a> -> option<'a>
值(因爲它們很危險)。處理選項值比較容易,你也可以使用'Option.map'和其他函數來處理它們(儘管這可能不適用於F#LINQ to SQL) – 2010-05-06 21:06:35是的,'Seq.tryFind(fun _ - > true )'很好。 – 2010-05-06 21:36:48