ОК, я чувствую себя идиотом! ... ну, немного! Я получил следующее на работу:
using (sysContext ctx = new sysDataContext()) {
try {
var data = ctx.Location.Where(x => x.Active == false).AsQueryable();
var query = data.ToPagedList(PageIndex, PageSize, o => o.DueDate, true);
dgv.DataSource = query;
}
catch (Exception) {
throw;
}
}
Теперь выражение сортировки описывается здесь как o => o.DueDate
. Это здорово, и хотя это работает, я пытаюсь найти способ создать универсальную функцию, которая позволит мне:
- Определить, по какому заголовку столбца щелкнули (возможно, с помощью оператора switch)
- Преобразуйте его тип в соответствующее свойство Linq Entity
- Передайте это свойство в универсальный метод
Метод, который выглядит примерно так:
private void RefreshData([type] SortExpression, bool Ascending, int PageIndex, int PageSize) {
using (sysDataContext ctx = new sysDataContext()) {
try {
var data = ctx.Location.AsQueryable();
var query = data.ToPagedList(PageIndex, PageSize, o => o.[SortExpression], Ascending);
dgv.DataSource = query;
}
catch (Exception) {
throw;
}
}
}
Возможно ли это?
Еще одна вещь (если она поможет вам мне помочь), метод SortedPageList выглядит так:
public static SortedPagedList<T, TResult> ToPagedList<T, TResult>(this IQueryable<T> source, int index, int pageSize, System.Linq.Expressions.Expression<Func<T, TResult>> keySelector, bool asc) {
return new SortedPagedList<T, TResult>(source, index, pageSize, keySelector, asc);
}
Как мне выразить System.Linq.Expressions.Expression<Func<T, TResult>>
как тип, который можно передать в качестве параметра?