我发现了一个处理排序和分页的扩展方法,用于LINQ。虽然这很有效,但我试图看看是否有其他方法可以使用。用于排序和分页的LINQ to SQL扩展方法
目前,对于extension method的代码如下:
public static IQueryable<T> Page<T, TResult>(
this IQueryable<T> obj,
int page,
int pageSize,
System.Linq.Expressions.Expression<Func<T, TResult>> keySelector,
bool asc,
out int rowsCount)
{
rowsCount = obj.Count();
int innerRows = (page - 1) * pageSize;
if (asc)
return obj.OrderBy(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
else
return obj.OrderByDescending(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
}
该方法将在表达式中,这是基于关闭的类型。
以我经销商类,我有一个方法GetDealers,其基本上调用此, 即
db.User.Page(1, 2, p => p.User.UserProperty.Name, true, out rowCount)
从事物呈现侧虽然,我不知道或可以访问的表达如上述,例如
ListView1.DataSource = users.GetDealers("SortColumn", pageNo, pageSize, out rowCount, bool asc);
ListView1.DataBind();
唯一的方法是在我的GetDealers方法中有一个switch语句,然后它将转换为表达式。有没有办法绕过这个,或者这个方法好吗?