Pergunta

Eu tenho uma consulta Linq que desejo chamar de vários lugares:

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new  {
                            a.Key,
                            a.MyValue
                          };

Como posso criar um método, colocar esse código nele e depois chamá-lo?

public  ???  GetSomeData()
{
   // my Linq query
}
Foi útil?

Solução

IQueryable e IEnumerable funcionam.Mas você deseja usar uma versão específica do tipo, IQueryable<T> ou IEnumerable <T>.

Então você desejará criar um tipo para manter os dados.

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new MyType
             {
                 Key = a.Key,
                 Value = a.MyValue
             };

Outras dicas

IQueryable

Então a declaração do seu método ficaria assim

public IQueryable GetSomeData()

Um método genérico deve fornecer inteligência:

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};
 }

Se você quiser retornar, você precisa de um tipo.

Em vez de var, declare usando IEnumerable<> e retorne essa variável.Iterar através dele realmente executa a consulta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top