我發現了一個處理排序和分頁的擴展方法,用於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語句,然後它將轉換爲表達式。有沒有辦法繞過這個,或者這個方法好嗎?