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
}
¿Fue útil?

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

IQueryable

Entonces la declaración de tu método se vería así

public IQueryable GetSomeData()

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
scroll top