Сортировка IEnumerable <T>в MVC 2 - PullRequest
       16

Сортировка IEnumerable <T>в MVC 2

3 голосов
/ 12 апреля 2011

Мой уровень обслуживания возвращает 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>?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Используйте метод 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));
0 голосов
/ 12 апреля 2011

Скорее всего, если вы захотите использовать библиотеку Dynamic LINQ, здесь - некоторые инструкции и ссылка для скачивания.

Вам нужно, чтобы ваше действие принимало некоторые параметры сортировки:

public ActionResult MyAction(string sortField)
{
    return View(myService.MyData().OrderBy(sortField));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...