DbContextが大量にあります。すべてのDbSetには、指定されたpageSizeを持ち、特定のsortOrderによって順序付けされたセットの項目のページを取得する関数が必要です。ような何か:Func <TSource、int>とintを比較して式<Func <TSource、bool>を作成する方法
var pageItems = dbContext.Posts
.Where(post => post.BlogId == blogId)
.OrderBy(some sortorder)
.Skip(pageNr * pageSize)
.Take(pageSize);
私はすべての私のDbSetsでこれを行うことができるようにしたいので、私はパラメータの一つは、この外部キーが持つべき値を比較し、別の外部キーを指定する拡張メソッドを作成しました。どこに適した述語でkeySelectorを変換する方法
public static IQueryable<TSource> GetPage<TSource>(this IQueryable<TSource> source,
int pageNr, int pageSize,
Expression<Func<TSource, Tproperty>> keySelector, Tproperty comparisonValue)
{
return source
.Where(???)
.OrderBy(some sortorder)
.Skip(pageNr * pageSize)
.Take(pageSize);
}
?
Jon Skeet到着 –
'Expression.LessThan'を使って、' keySelector'と 'comprasionValue'を' Expression.Constant'に変換してみてください。 –
'Where'が解決されたとしましょう。あなたは 'OrderBy'を解決する方法を教えてください。 –