мое приложение имеет следующий код для добавления метода расширения ToSortedList в любой IEnumberable:
public class SortedList<T, TResult> : List<T> {
public SortedList(IEnumerable<T> source, Expression<Func<T, TResult>> sortBy, SortDirection sortDirection) {
Initialize(source is IQueryable<T> ? source as IQueryable<T> : source.AsQueryable(), sortBy, sortDirection);
}
protected void Initialize(IQueryable<T> source, Expression<Func<T, TResult>> sortBy, System.Web.UI.WebControls.SortDirection sortDirection) {
AddRange(sortDirection == SortDirection.Ascending ? source.OrderBy(sortBy) : source.OrderByDescending(sortBy));
}
}
public static class SortingExtensions {
public static SortedList<T, TResult> ToSortedList<T, TResult>(this IEnumerable<T> source, Expression<Func<T, TResult>> sortBy, SortDirection sortDirection) {
return new SortedList<T, TResult>(source, sortBy, sortDirection);
}
}
В старом поставщике LINQ (поверх NHibernate 2.1) я мог бы сказать:
session.Linq<Article>().ToSortedList(a => a.Date, SortDirection.Ascending);
Однако, используя новый встроенный поставщик LINQ в NHibernate 3 (измените Linq на Query выше), это не работает, и выдается следующая ошибка:
"Указанный метод не поддерживается."- в методе Initialize
Буду очень признателен, если кто-нибудь покажет мне, как это можно сделать.