如何将OrderBy表达式数组传递给方法?

我正在尝试增强我的存储库,因此它是负责订购的人。 我已经应用了这个问题的答案,就存储库而言,我很确定它已经完成了。

我遇到的问题是我不知道如何将数组传递给存储库中的方法。 编译器不停地向我大吼大叫代表们。 在上面的链接问题中,作者基本上是在做我想要的,所以它必须是可能的。

这是我的存储库代码:

public virtual IList SelectOrderedList( Expression<Func>[] Orderers, bool Ascending = true) { IOrderedQueryable TemporaryQueryable = null; foreach (Expression<Func> 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(); } 

另外,我并不是100%确定我应该使用Expression<Func> 。 出于某种原因,我觉得它应该是Expression<Func> ,但我不太确定。

无论如何,如果有人能告诉我如何实际打电话,我真的很感激。 奖励点和爱,如果你能使它像params争论一样工作。

 public virtual IList SelectOrderedList( params Expression>[] Orderers) { IOrderedQueryable TemporaryQueryable = null; foreach (Expression> Orderer in Orderers) { if (TemporaryQueryable == null) { TemporaryQueryable = this.ObjectSet.OrderBy(Orderer); } else { TemporaryQueryable = TemporaryQueryable.ThenBy(Orderer); }; }; return TemporaryQueryable.ToList(); } 

然后将它用作SelectOrderedList(o1 => (o1.Something), o2 => (o2.SomethingElse))

另外,为Descending写另一个:)

如果你想要一个,每个orderer可以升序或降序,用Tuple>,SortDirection>替换签名,但你不能使用带有隐式类型元组的隐式类型lambda(并且你也不能将它们与隐式表达式一起使用)那么,你’ d使用它时有相当难看的代码……