2010-01-21 4 views

Respuesta

33

Es realmente idéntico al mapa de los lenguajes funcionales. La razón por la que se llama Select es que está diseñada para ser utilizada como parte de LINQ que utiliza palabras clave similares a SQL.

from item in collection 
where item.Value == someValue 
select item.Name 

se traduce a:

collection.Where(item => item.Value == someValue) 
      .Select(item => item.Name) 

sería un poco inconsistente si Select fue nombrado Map; algo así como:

collection.Filter(item => item.Value == someValue) 
      .Map(item => item.Name) 

De hecho, muchas personas utilizan LINQ sin haber oído hablar de la programación funcional en absoluto. Para ellos, LINQ es un método para recuperar objetos de datos y consultarlos fácilmente (como las consultas SQL). Para ellos, Select y Where tienen mucho sentido. Mucho más que Map y Filter.

+2

Tiene todo el sentido. Si realmente me importa tanto, podría ajustar 'Where' y' Select' en los métodos de extensión. – ChaosPandion

+0

Buena respuesta. De hecho, utilicé "Seleccionar" sin LINQ, pero es mucho más claro como una expresión LINQ. – willem

+0

Gracias, gran respuesta. Fuera de contexto, no tiene ningún sentido, pero esto ayuda a explicarlo. – nsantorello

0

Una de las principales razones por las que Select viene último es hacer que Intellisense funcione. Al poner en primer lugar la fuente de la secuencia (de la declaración), Intellisense puede funcionar correctamente.

+5

¿cómo se relaciona esto con la pregunta? – nawfal

3

Al principio Select me pareció un poco confuso también, pero era solo cuestión de tiempo. Mehrdad le dice una buena razón para Select. Aparte de eso, creo que Select transmite el aspecto de inmutabilidad de Linq mucho mejor. No es que Map significara que está mutando la estructura original, pero Select lo dice mucho más claro. Le dice que no está tocando la lista original, sino que simplemente selecciona de ella para formar otra lista.

Va con otros nombres así como Where. Cuando llamas al collection.Filter te da una idea de que estás filtrando en esa colección en particular, o al menos la primera vez. Al final, todo es cuestión de familiarizarse. Aunque al principio estaba tan molesto por las nomenclaturas Linq, ahora siento que el equipo de MS lo tiene más correcto.

+0

+1 para "' Seleccionar 'lo dice mucho más claro ". Uno tiene que pensar fuera de la sintaxis de SQL. – nrodic

Cuestiones relacionadas