FirstOrDefault In F#

前端 未结 4 1071
孤街浪徒
孤街浪徒 2021-01-17 12:27

How to write FirstOrDefault Linq Query in F#? Can I use linq to sql in F# in totally?

相关标签:
4条回答
  • Note that a more idiomatic approach within F# would probably be to use something along the lines of Seq.tryFind rather than to use the LINQ operators, although it's not a drop in replacement since it returns an option value.

    0 讨论(0)
  • 2021-01-17 12:57

    Because the Seq module already has a head function of type seq<'a> -> 'a, I would define a function tryHead with signature seq<'a> -> option<'a>:

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

    using it as:

    [1; 2; 3] |> Seq.tryHead
    
    0 讨论(0)
  • 2021-01-17 12:59

    Alternatively, you can define your own firstordefault easily:

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

    Example:

    let exampleList = [ 1; 2; 3 ]
    

    using F# interactive,

    firstordefault exampleList;;  
    val it : int = 1
    
    0 讨论(0)
  • 2021-01-17 13:02

    Regarding LINQ-to-SQL, see

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

    Regarding FirstOrDefault, it's just an extension method in the System.Linq namespace:

    let l = [1;2;3]
    open System.Linq 
    let r = l.FirstOrDefault()
    
    0 讨论(0)
提交回复
热议问题