私のベースリポジトリクラスで
この関数は、ソートされたデータコレクションをDBから取得できるようにするために作成しました。Tはクラスレベルで定義されたジェネリックです
public abstract class RepositoryBase<T>
where T : class
コードは次のとおりです。
public IList<T> GetAll<TKey>(Expression<Func<T, bool>> whereCondition, Expression<Func<T, TKey>> sortCondition, bool sortDesc = false)
{
if (sortDesc)
return this.ObjectSet.Where(whereCondition).OrderByDescending(sortCondition).ToList<T>();
return this.ObjectSet.Where(whereCondition).OrderBy(sortCondition).ToList<T>() ;
}
私の目標は、次のように関数を呼び出すことができるように、汎用の並べ替えパラメーターを導入することでした。
repo.GetAll (model=>model.field>0, model=>model.sortableField, true)
つまり、匿名関数を介して直接ソートフィールドを指定できるため、Intellisenseを使用して...
残念ながら、この関数は、最後のコード行がコンパイル時にエラーを生成するため、機能しません。
私も電話をかけようとしました:
repo.GetAll<Model> (model=>model.field>0, model=>model.sortableField, true)
しかし、これは機能しません。
目標を達成するために関数をどのように書くべきですか?
私はEF5、c#、.NET4.5で作業しています