Nasıl FirstOrDefault Linq Query F # dilinde nasıl yazılır? F # içinde linq to lin`ü tamamen kullanabilir miyim? LINQ SQL İlişkinFirstOrDefault F #
cevap
Not o F # içinde daha deyimsel bir yaklaşım olur büyük olasılıkla geri dönmesinden beri bir düşüş olmasa da, LINQ operatörlerini kullanmak yerine Seq.tryFind
satırları boyunca bir şey kullanmak olabilir bir seçenek değeri.
,
FirstOrDefault
İlişkin bakın, System.Linq
ad alanında sadece bir uzantısı method var:
let l = [1;2;3]
open System.Linq
let r = l.FirstOrDefault()
Alternatif olarak, kolayca kendi FirstOrDefault tanımlayabilirsiniz:
let firstordefault list =
match list with
| head :: tail -> head
| [] -> 0 // some default value
Örnek: Seq
modül zaten head
işlevi vardır
firstordefault exampleList;;
val it : int = 1
Çünkü
interaktif F # kullanaraklet exampleList = [ 1; 2; 3 ]
, seq<'a> -> 'a
türünde F #, genellikle kullanarak aviod deneyin `null` -
[1; 2; 3] |> Seq.tryHead
Ben de Seq.tryFind`` kullanarak tavsiye ediyorum
O zamandan beri 'tryHead' (https://github.com/Microsoft/visualfsharp/commit/b10392dc16593bf9286583e2a87217d18fa18b8a) F # 4.0'a eklenmiştir. –
: olarak kullanma
: Ben imza
seq<'a> -> option<'a>
olan bir işlevtryHead
tanımlarsınız değerler (çünkü tehlikelidirler). 'Option.map' ve onlarla çalışmak için diğer işlevleri de kullanabileceğinden, seçenek değerlerini kullanmak daha kolaydır (ancak, bu muhtemelen SQL'de F # LINQ içinde çalışmayacaktır) –Yep, Seq.tryFind (fun _ -> true)) harika çalışıyor. –