Можно ли установить LinqDataSource.OrderBy для результата метода?
Я не использовал LINQ широко, но чем больше я его использую, тем больше понимаю, насколько мощным он может быть. Использование предложения LinqDataSource.OrderBy, очевидно, легко, если вы хотите отсортировать свойство ограниченных элементов, но что если вы хотите отсортировать элементы на основе возврата метода? Возьмем, к примеру, этот класс (пожалуйста, не обращайте внимания на причудливый дизайн - он просто используется, чтобы подчеркнуть мою точку зрения):
public class DataItem
{
private string Id { get; set; }
private int SortValue { get; set; }
public DataItem(string id, int sortValue)
{
this.Id = id;
this.SortValue = sortValue;
}
public int GetSortValue()
{
return SortValue;
}
}
Есть ли способ, которым я могу установить выражение orderby на LinqDataSource так, чтобы оно использовало значение, возвращаемое из GetSortValue (т. Е. Заказ другими членами, кроме свойств), но без изменения класса DataItem?
2 ответа
Если у метода нет параметров, вы можете обернуть его свойством?
public int SortOrderBy { get { return GetSortValue(); } }
Редактировать: Это также будет работать, если параметры являются константами или полями / свойствами класса.
В документах MSDN упоминается, что действительно возможно выполнить пользовательскую сортировку, но я, возможно, неправильно истолковал ваш вопрос.