consulta uma lista de objetos dinâmicos
-
27-10-2019 - |
Pergunta
Eu estou usando maciça para obter a tabela de configuração no banco de dados. Eu gostaria de armazenar em cache a configuração desde que o aplicativo recebe valores a partir dele o tempo todo.
uma vez em cache há uma maneira fácil de encontrar o objeto, onde name = 'algo'
aqui é o lugar onde toda a tabela é armazenada em cache.
protected override dynamic Get()
{
var ret = HttpRuntime.Cache["Config"];
if (ret == null)
{
ret = _table.All();
HttpRuntime.Cache.Add("Config", ret, null, DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration,CacheItemPriority.Low, null );
}
return ret;
}
aqui é onde eu gostaria de puxar um registro do que o método
protected override dynamic Get(string name)
{
return this.Get().Where(x => x.Name == name ).SingleOrDefault();
}
Eu sei LINQ ou lambda declarações não são permitidos em objetos dinâmicos. mas o que é a próxima melhor maneira de puxar que um objeto fora dessa lista?
Solução
Você não poderia escrever a expressão lambda diretamente como argumento Onde, mas você pode atribuí-lo a uma variável Func. Também eu acredito que os métodos de extensão não iria funcionar em objetos dinâmicos, de modo que você tem que chamar o método de extensão diretamente.
Eu acho que você poderia usar o código abaixo,
Func<dynamic, bool> check = x => x.Name == name;
System.Linq.Enumerable.Where<dynamic>(this.Get(), check);