Como passar uma matriz de expressão OrderBy para um método?
Estou tentando aprimorar meu repositório para que ele seja o responsável pelo pedido. Eu apliquei a resposta deessa questão e no que diz respeito ao repositório, tenho certeza de que isso foi feito.
O problema que estou enfrentando é que não tenho certeza de como agora passar uma matriz para os métodos no repositório. O compilador continua gritando comigo sobre os delegados. Na questão vinculada acima, o autor está essencialmente fazendo o que eu quero, portanto deve ser possível.
Aqui está o meu código de repositório:
public virtual IList<TEntity> SelectOrderedList(
Expression<Func<TEntity, bool>>[] Orderers,
bool Ascending = true) {
IOrderedQueryable<TEntity> TemporaryQueryable = null;
foreach (Expression<Func<TEntity, bool>> Orderer in Orderers) {
if (TemporaryQueryable == null) {
TemporaryQueryable = (Ascending ? this.ObjectSet.OrderBy(Orderer) : this.ObjectSet.OrderByDescending(Orderer));
} else {
TemporaryQueryable = (Ascending ? TemporaryQueryable.ThenBy(Orderer) : TemporaryQueryable.ThenByDescending(Orderer));
};
};
return TemporaryQueryable.ToList();
}
Em uma nota lateral, não tenho 100% de certeza de que devo usarExpression<Func<TEntity, bool>>
. Por alguma razão, tenho a sensação de que deveria serExpression<Func<TEntity, int>>
, mas não tenho muita certeza.
De qualquer forma, eu realmente aprecio isso se alguém puder me mostrar como realmente chamar isso. Pontos de bônus e amor, se você puder fazê-lo funcionar como umparams
argumento.