#c# #asp.net-mvc-2
#c# #asp.net-mvc-2
Вопрос:
Мой уровень обслуживания возвращает IEnumerable<ResortsView>
моему контроллеру, и я должен предоставить возможность СОРТИРОВАТЬ результаты в пользовательском интерфейсе по следующим критериям: Цена (исключая товары с нулевой ценой), имя поставщика и рейтинг. Вот фрагмент кода моих объектов / классов:
[Serializable]
public class ResortsView : SupplierView
{
public IList<ProductView> ResortProducts { get; set; }
public string CheckInTime { get; set; }
public string CheckOutTime { get; set; }
public virtual IList<ImageView> Images { get; set; }
}
[Serializable]
public class SupplierView
{
public string SupplierID { get; set; }
public string SupplierName { get; set; }
public string Description { get; set; }
public string Rating { get; set; }
public string URL { get; set; }
}
[Serializable]
public class ProductView
{
public string Code { get; set; }
public string Description { get; set; }
public decimal? Price { get; set; }
public ErrorView PricingError { get; set; }
}
Каков наилучший способ обработки сортировки результатов внутри IEnumerable<ResortsView>
?
Ответ №1:
Используйте OrderBy
метод стека LINQ:
IEnumerable<ResortsView> source = GetResorts();
var model = source.OrderBy(rv => rv.CheckInTime);
Для заказа по самой низкой, ненулевой цене в ResortProducts
:
var model = source.OrderBy(rv => rv.ResortProducts.Where(p => p.Price > 0).Min(p => p.Price));
Комментарии:
1. Спасибо Femaref. Это сработало бы для свойств внутри ResortsView. Как я могу выполнить OrderBy по цене, которая находится внутри ProductView?
2. Вы имеете в виду
IEnumerable<ProductView>
?3. Нет.
ResortsView
содержитpublic IList<ProductView> ResortProducts { get; set; }
иProductView
имеет цену. Итак, как я могу отсортировать по цене?source.OrderBy(rv => rv.ResortProducts.Price)
не будет работать.4. По чему вы хотите выполнить сортировку? Среднее значение цен? максимальное? минимальное значение?
5.
IEnumerable<ResortsView>
будет содержать список курортов. Каждый курорт может содержать несколько продуктов с их ценами. Пользователь может сортировать курорты по ценам на продукты (по возрастанию и убыванию), исключая игнорирование ценовых позиций.
Ответ №2:
Скорее всего, если вы захотите использовать динамическую библиотеку LINQ, здесь приведены некоторые инструкции и ссылка для скачивания.
Вам нужно, чтобы ваше действие принимало некоторые параметры сортировки:
public ActionResult MyAction(string sortField)
{
return View(myService.MyData().OrderBy(sortField));
}