C#, LINQ, Dinâmica Consulta: Código para filtrar uma consulta dinâmica fora do repositório

StackOverflow https://stackoverflow.com/questions/2497918

Pergunta

Se você fizer algo assim em seu repositório:

IQueryable<CarClass> GetCars(string condition, params object[] values) {
    return db.Cars.Where(condition, values);
}

E você define a condição e os valores fora do repositório:

string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };

var result = myRepo.GetCars( condition, values);

Como você seria capaz de classificar o resultado fora do repositório com consulta dinâmica?

return View( "myView", result.OrderBy("Price"));

De alguma forma, estou perdendo a natureza dinâmica quando os dados saem do repositório. E sim, eu não descobri como devolver o tipo de carclass, onde você normalmente faria uma nova carclass selecionada {FieldName = M.FieldName, ...}

Foi útil?

Solução

A consulta dinâmica requer:

  • a fonte é IQueryable<T> (então se for IEnumerable<T> ou similar, basta ligar .AsQueryable() nele)
  • Uma DLL extra a ser referenciada no código que deseja executar uma consulta dinâmica
  • o apropriado using As diretrizes estão em vigor no topo do arquivo de origem local

Verifique esses três, e você poderá adicionar .Where(condition), .OrderBy(name), etc.

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