ienumerable, iqueryable
-
viernes, 13 de abril de 2012 22:47
Todas las respuestas
-
viernes, 13 de abril de 2012 23:24Moderador
exacto estos son bastante usados cuando trabjas con queries de linq
es mas veras que IQueruyable estan bajo el namespace System.Linq
mientras que
por lo que claramente la primera la suarias con linq mientras que la otra podrias usarla para asignar colecciones simple que quieres asignar a una interfaz generica
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
lunes, 16 de abril de 2012 3:38y para evitar el inum,erable para ellos se utiliza el "var?
-
lunes, 16 de abril de 2012 3:51Moderador
en realidad el "var" es bastante mas general
se lo suele usar junto a queries de linq ya que el resultado de estos retornan son objetos bastante largos que declara quedando feo en el codigo
por eso se usa var para simplificar
pero podrias poner
var i = 10;
y esto tambien es valido, y no estas suando ningun IEnumerable
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta palermo_software lunes, 16 de abril de 2012 4:02
- Desmarcado como respuesta palermo_software lunes, 16 de abril de 2012 4:02
-
lunes, 16 de abril de 2012 3:58
Vos te referis a cuando tenes que especificar el tipo, en este caso IEnumerable<DynamicOrdering> y cuando podes usar var?
El var trabaja por inferencia, es decir, evalua el tipo que esta a la derecha del =(igual) e infiere el tipo.
-
lunes, 16 de abril de 2012 4:07
hola ignacio laborde ,
si masomenos a eso me refiero podria hacer
var orderings = parser.ParseOrdering();
y luego aplicar el foreach
sobre orderings?
-
lunes, 16 de abril de 2012 4:10Moderador
claro porque no podrias
si sabes que tipo devuelve ParseOrdering() ya sabes de que tipo es orderings
porque el var solo es para abreviar la escritura y no definir tipos demasiados largos de declarar
lo que me pregunto es, antes de preguntarlo al foro, porque no realizas la prueba, digo no es mas directo probarlo y luego sino sale preguntar, te ahorra un paso si sale, porque ya no lo preguntas
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP, Moderator lunes, 16 de abril de 2012 4:11
- Marcado como respuesta palermo_software lunes, 16 de abril de 2012 15:03
-
lunes, 16 de abril de 2012 4:12
Si perfectamente, el parseordering te termina devolviendo un tipo que no presenta ambieguedad, y lo infiere correctamente, suponete esto:
Queres declarar un tipo para almacenar double pero pones asi:
Var valordouble = 2;
cuando quieras asignarle un valor con coma te va a tirar un error, porque valordouble va a ser creada del tipo int.
Saludos
- Marcado como respuesta palermo_software lunes, 16 de abril de 2012 15:03
-
lunes, 16 de abril de 2012 13:26
lo que me pregunto es, antes de preguntarlo al foro, porque no realizas la prueba, digo no es mas directo probarlo y luego sino sale preguntar, te ahorra un paso si sale, porque ya no lo preguntas
hola Leandro lo que pasa esque no puedo probar el codigo ,estoy revisando las fuentes de un proyecto y en algunos casos veo que usan el Ienumerable y en otras el "var", entonces supongo que la pregunta generica seria en que casos se puede usar uno y otro. -
lunes, 16 de abril de 2012 13:38Moderador
como no puedes probar el codigo? no tienes el Visual Studio donde escribes alli lo que estas consultando, digo sino pruebas lo que codificas asi no aprenderas nunca
estoy revisando las fuentes de un proyecto y en algunos casos veo que usan el Ienumerable y en otras el "var", entonces supongo que la pregunta generica seria en que casos se puede usar uno y otro.
en el caso que quieras no hay nada que diga donde si y donde no
igualmente de forma particular me gusta usar var con linq pero para declarar variables simples uso el metodo tradicional
o sea hacer esto
var i = 10;
yo no lo hago, uso
int i = 10;
el var lo suelo usar en los lugares donde la declaracion del tipo es larga y dificulta el entendimiento
Leandro Tuttini
Blog
Buenos Aires
Argentina -
lunes, 16 de abril de 2012 13:47
hola lendro de momento no puedo compilar las fuentes, solo las puedo revisar seguire tu consejo y empezare a probar apenas tenga la oportunidad, y bueno tratando de aclarar el tama yo veo que aveces se usa var en los tipos que define el framework copmo int, double, pero en mi caso el tipo es de una clase
internal class DynamicOrdering { public bool Ascending; public Expression Selector; }entonce esto IEnumerable<DynamicOrdering> orderings = parser.ParseOrdering();
se podria escribir asi?
var orderings = parser.ParseOrdering();
-
lunes, 16 de abril de 2012 13:51
Hola Palermo,
Como bien dice Ignacio, cuando utilizas var, es el compilador el que infiere el tipo. Esto es util en dos escenarios:
1.- Simplicidad de codigo, como apunta Leandro.
2.- Situaciones en las que no se sabe exactamente el tipo: por ejemplo con tipos anonimos, lo que es muy habitual en las sentencias linq.
Te paso un par de links que son bastante esclarecedores al respecto:
http://msdn.microsoft.com/es-es/library/bb383973.aspx
http://msdn.microsoft.com/es-es/library/bb384061.aspx
Por cierto, respondiendo a tu pregunta: siempre que sepas el tipo de datos puedes utilizar IEnumerable<tipo>, IQueryable<tipo> o simplemente var. Si no sabes el tipo que devuelve tu consulta debes utilizar "var", como por ejemplo en:
var custQuery = from cust in customers where cust.City == "Phoenix" select new { cust.Name, cust.Phone };
- Editado Carles Vila lunes, 16 de abril de 2012 13:54
- Editado Carles Vila lunes, 16 de abril de 2012 13:55
- Marcado como respuesta palermo_software lunes, 16 de abril de 2012 15:03
-
lunes, 16 de abril de 2012 13:57Moderadorse podria escribir asi?var orderings = parser.ParseOrdering();
exacto, asi es como escribes es como debe ir
Leandro Tuttini
Blog
Buenos Aires
Argentina

