¿Cómo puedo devolver un tipo anónimo de un método?
-
09-06-2019 - |
Pregunta
Tengo una consulta de Linq a la que quiero llamar desde varios lugares:
var myData = from a in db.MyTable
where a.MyValue == "A"
select new {
a.Key,
a.MyValue
};
¿Cómo puedo crear un método, ponerle este código y luego llamarlo?
public ??? GetSomeData()
{
// my Linq query
}
Solución
IQueryable e IEnumerable funcionan.Pero desea utilizar una versión de tipo específico, IQueryable<
t>
o IEnumerable <
t>
.
Entonces querrás crear un tipo para conservar los datos.
var myData = from a in db.MyTable
where a.MyValue == "A"
select new MyType
{
Key = a.Key,
Value = a.MyValue
};
Otros consejos
Un método genérico debería darle inteligencia:
public class MyType {Key{get;set;} Value{get;set}}
public IQueryable<T> GetSomeData<T>() where T : MyType, new()
{ return from a in db.MyTable
where a.MyValue == "A"
select new T {Key=a.Key,Value=a.MyValue};
}
Si desea regresar, necesita un tipo.
En lugar de var
, declarar usando IEnumerable<>
y devolver esa variable.Al iterarlo, en realidad se ejecuta la consulta.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow