Como posso retornar um tipo anônimo de um método?
-
09-06-2019 - |
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
}
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
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