Come scrivere FirstOrDefault Linq Query in F #? Posso usare linq su sql in F # completamente?FirstOrDefault In F #
risposta
Si noti che un approccio più idiomatica all'interno di F # sarebbe probabilmente usare qualcosa sulla linea Seq.tryFind
piuttosto che utilizzare gli operatori LINQ, sebbene non si tratti di una sostituzione in quanto restituisce un valore di opzione.
Per quanto riguarda LINQ to SQL, vedere
Per quanto riguarda FirstOrDefault
, è solo un'estensione method nel System.Linq
namespace:
let l = [1;2;3]
open System.Linq
let r = l.FirstOrDefault()
In alternativa, è possibile definire il proprio FirstOrDefault facilmente:
let firstordefault list =
match list with
| head :: tail -> head
| [] -> 0 // some default value
Esempio:
let exampleList = [ 1; 2; 3 ]
utilizzando F # interattivo,
firstordefault exampleList;;
val it : int = 1
Poiché il modulo Seq
ha già una funzione head
di tipo seq<'a> -> 'a
, Vorrei definire una funzione con la firma tryHead
seq<'a> -> option<'a>
:
module Seq =
let tryHead (ls:seq<'a>) : option<'a> = ls |> Seq.tryPick Some
usando come:
[1; 2; 3] |> Seq.tryHead
Da allora 'tryHead' (https://github.com/Microsoft/visualfsharp/commit/b10392dc16593bf9286583e2a87217d18fa18b8a) è stato aggiunto in F # 4.0. –
- 1. Linq FirstOrDefault
- 2. C# Linq Dove (espressione) .FirstorDefault() vs .FirstOrDefault (espressione)
- 3. Prestazioni di FirstOrDefault()
- 4. FirstOrDefault con più condizioni
- 5. LINQ - FirstOrDefault() quindi Select()
- 6. Find() vs. Where(). FirstOrDefault()
- 7. FirstOrDefault() off di un LINQ rispetto a FirstOrDefault() con un Lambda?
- 8. Utilizzare .DefaultIfEmpty() anziché .FirstOrDefault() ?? String.Empty;
- 9. un approccio diverso sul FirstOrDefault
- 10. F # ciclo continuo in F #
- 11. linq Firstordefault verifica il valore predefinito
- 12. Expression.Call - Calling estensione LINQ: FirstOrDefault, dove
- 13. Come dividere F [A \/B] in (F [A], F [B])
- 14. in F #
- 15. In Linq, qual è la differenza tra .FirstOrDefault e .SingleOrDefault
- 16. Perché utilizzare First invece di FirstOrDefault in LINQ?
- 17. #indent "off" in F #
- 18. Trasforma file in F #
- 19. uguaglianza strutturale in F #
- 20. OrderBy ThenBy in F #
- 21. somma condizionale in F #
- 22. moduli generici in F #
- 23. Barriere asincrone in F #
- 24. esempi metaprogrammazione in F #
- 25. Programmazione dinamica in F #
- 26. Registra variazioni in F #
- 27. ricorsivi lambda in F #
- 28. Oggetti ricorsivi in F #?
- 29. Ripetere sequenze in F #
- 30. immutabile in F #
Vorrei anche raccomandare usando 'Seq.tryFind' - in F #, in genere si cerca di aviod usando' null' valori (perché sono pericolosi). Gestire i valori delle opzioni è più semplice, dato che puoi anche usare 'Option.map' e altre funzioni per lavorare con loro (anche se probabilmente non funzionerà in F # LINQ su SQL) –
Sì,' Seq.tryFind (fun _ -> true) 'funziona alla grande –