Вы можете найти OrderBy в отношении HABTM здесь .
Добавьте Sort к определению вашего отношения, создайте Comparer, который реализует IComparer и который сделает свое дело.
В вашем коде это даст что-то вроде этого:
[HasAndBelongsToMany(Table = "SupplierRecordUrls",ColumnKey = "SupplierID", ColumnRef = "RecordUrlID", Lazy = true, Sort="MyProject.RecordUrlNameComparer, MyProject.RecordUrl")]
public virtual IList<RecordUrl> RecordUrls
{
get;
set;
}
С:
public class RecordUrlNameComparer: IComparer<RecordUrl>
{
Int32 System.Collections.Generic.IComparer<RecordUrl>.Compare( RecordUrl x, RecordUrl y )
{
return new System.Collections.Comparer( System.Globalization.CultureInfo.CurrentCulture ).Compare( x.Name, y.Name );
}
} // public class RecordUrlNameComparer: IComparer<RecordUrl>
Я позволю вам прочитать статью:)
Редактировать:
Ваша ошибка сейчас: Could not instantiate comparator class [MyProject.RecordUrl.RecordUrlComparer, MyProject.RecordUrl] for collection MyProject.Supplier.RecordUrls
Что бы я сделал:
Создайте Comparer как внутренний класс RecordUrls.
Изменить сортировку на: Sort = "MyProject.Supplier.RecordUrl$RecordUrlComparer, MyProject.Supplier.RecordUrl"
Если это все еще не работает, вы по-прежнему получаете ошибку «не удалось создать экземпляр», попробуйте сделать класс Comparer статическим. Я не уверен, как он используется, но если это статический вызов, это может сработать :))