13 Stimmen

FirstOrDefault in F#

Wie schreibt man FirstOrDefault Linq Query in F#? Kann ich Linq to Sql in F# in total verwenden?

17voto

kvb Punkte 54045

Beachten Sie, dass ein idiomatischerer Ansatz in F# wahrscheinlich darin bestünde, etwas in der Art von Seq.tryFind anstatt die LINQ-Operatoren zu verwenden, obwohl es kein vollwertiger Ersatz ist, da es einen Optionswert zurückgibt.

13voto

Tahir Hassan Punkte 5469

Weil die Seq Modul hat bereits eine head Funktion vom Typ seq<'a> -> 'a würde ich eine Funktion definieren tryHead mit Unterschrift seq<'a> -> option<'a> :

module Seq =
    let tryHead (ls:seq<'a>) : option<'a>  = ls |> Seq.tryPick Some

als verwenden:

[1; 2; 3] |> Seq.tryHead

5voto

Brian Punkte 115257

Bezüglich LINQ-to-SQL, siehe

http://blogs.msdn.com/dsyme/archive/2009/10/23/a-quick-refresh-on-query-support-in-the-f-power-pack.aspx

Betreffend FirstOrDefault ist es nur eine Erweiterung Methode im System.Linq Namensraum:

let l = [1;2;3]
open System.Linq 
let r = l.FirstOrDefault()

3voto

Drew Holiday Punkte 113

Sie können aber auch ganz einfach Ihre eigene Voreinstellung definieren:

let firstordefault list =
   match list with
   | head :: tail -> head 
   | [] -> 0 // some default value

Exemple :

let exampleList = [ 1; 2; 3 ]

mit F# interaktiv,

firstordefault exampleList;;  
val it : int = 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X