Quando leggo il codice che utilizza Select
, penso "seleziona-tutto-dove". Quando leggo il codice che utilizza Map
, penso "questo-a-quello" o "applica-a-tutti". Non posso essere l'unica persona che sente il nome Select
è confuso.Perché il metodo LINQ "apply-to-all" denominato Select?
risposta
E 'davvero identico a mappare da linguaggi funzionali. Il motivo per cui è denominato Select
è che è stato progettato per essere utilizzato come parte di LINQ che utilizza parole chiave simili a SQL.
from item in collection
where item.Value == someValue
select item.Name
viene tradotta a:
collection.Where(item => item.Value == someValue)
.Select(item => item.Name)
che sarebbe stato un po 'incoerente se Select
si chiamava Map
; qualcosa come:
collection.Filter(item => item.Value == someValue)
.Map(item => item.Name)
In effetti, molte persone usano LINQ senza aver mai sentito parlare di programmazione funzionale. Per loro, LINQ è un metodo per recuperare oggetti di dati e interrogarli facilmente (come le query SQL). Per loro, Select
e Where
hanno perfettamente senso. Molto più di Map
e Filter
.
Uno dei motivi principali per cui Select arriva è rendere Intellisense funzionante. Inserendo prima la sorgente della sequenza (dall'istruzione), Intellisense può funzionare correttamente.
come è correlato alla domanda? – nawfal
All'inizio Select
sembrava poco confuso anche per me, ma era solo una questione di tempo. Mehrdad ti dice una buona ragione per Select
. A parte questo, mi sembra che Select
trasmetta molto meglio l'aspetto di immutabilità di Linq
. Non che Map
significhi che sta mutando la struttura originale, ma lo Select
lo afferma molto più chiaro. Ti dice che non stai toccando la lista originale, ma semplicemente selezionando da essa per formare un altro elenco.
Si accompagna ad altri nomi come Where
. Quando chiami collection.Filter
ti dà l'idea che stai filtrando su quella particolare raccolta, o almeno la prima volta. Alla fine si tratta solo di familiarizzare. Anche se all'inizio ero così infastidito dai nomi Linq
, ora sento che il team MS ha ottenuto il risultato più corretto.
+1 per "Seleziona" lo dice molto più chiaro ". Si deve pensare al di fuori della sintassi SQL. – nrodic
- 1. LINQ Select all'interno di un Select
- 2. LINQ - FirstOrDefault() quindi Select()
- 3. Qual è il metodo SELECT più efficiente e perché?
- 4. Perché LINQ-to-Entites riconosce il mio metodo personalizzato?
- 5. Come implementare il metodo Linq OrderBy?
- 6. DataTable Selezionare vs LINQ Select
- 7. LINQ to Entities non riconosce il 'Nome metodo' metodo metodo
- 8. chiamare il metodo da query LINQ
- 9. LINQ to Entities non riconosce il metodo 'System.String ToString()' metodo
- 10. Dov'è il metodo di estensione LINQ "Piegatura"?
- 11. metodo di estensione LINQ
- 12. Passo in un'espressione al di LINQ Select
- 13. Linq Trova Metodo IQueryable
- 14. LINQ Except() Il metodo non funziona
- 15. Metodo di estensione medio in Linq per il valore predefinito
- 16. LINQ alle entità non riconosce il metodo Ultimo. Veramente?
- 17. Qual è il metodo migliore per utilizzare LINQ?
- 18. Perché il metodo di estensione Single LINQ crea una query Selezionare TOP (2)?
- 19. Linq, è select(). SingleorDefault() una cattiva idea?
- 20. LINQ Select Dichiarazioni - Dove Not In
- 21. Perché il 'BINARY' in un'istruzione SELECT?
- 22. Come utilizzare Lambda in LINQ select statement
- 23. Insert/Select con LINQ to SQL
- 24. Istruzione IF all'interno di LINQ SELECT
- 25. LINQ e il metodo di estensione Count
- 26. metodo d3.select non funziona
- 27. Uso errato del metodo .select()
- 28. LINQ to Entities non riconosce il metodo 'Int32
- 29. LINQ to Entities non riconosce il metodo 'System.String ToString (Int32)'
- 30. LINQ to Entities non riconosce il metodo System.ObjectCompareObjectEqual
Ha senso. Se mi interessa davvero tanto potrei racchiudere 'Where' e' Select' nei metodi di estensione. – ChaosPandion
Buona risposta. In realtà ho usato "Seleziona" senza LINQ, ma è molto più chiaro come espressione LINQ. – willem
Grazie, ottima risposta. Fuori dal contesto non ha alcun senso, ma questo aiuta a spiegarlo. – nsantorello