私は、その用途が非常に一般的で、テーブルを具体的に参照しないリポジトリ クラスを持っています。以下に示すのは、テーブル内のすべての項目を取得する関数の 1 つです。私がやりたいのは、これを拡張して、結果を順序付けできるようにすることです。述語/式などを渡す方法はありますか?
public IQueryable<T> All<T>() where T : class
{
return _context.Set<T>().AsQueryable();
}
私は、その用途が非常に一般的で、テーブルを具体的に参照しないリポジトリ クラスを持っています。以下に示すのは、テーブル内のすべての項目を取得する関数の 1 つです。私がやりたいのは、これを拡張して、結果を順序付けできるようにすることです。述語/式などを渡す方法はありますか?
public IQueryable<T> All<T>() where T : class
{
return _context.Set<T>().AsQueryable();
}
Queryable.OrderBy
すべてのエンティティでメソッドを使用するだけです。
fooRepository.All().OrderBy(foo => foo.Bar)
述語を使用してメソッドを追加する場合:
public IQueryable<T> AllOrderedBy<T,TKey>(Expression<Func<T,TKey>> predicate)
where T : class
{
return _context.Set<T>().OrderBy(predicate);
}
ところで、をDbSet<T>
実装IQueryable<T>
しているので、を呼び出す必要はありませんAsQueryable()
。