Sorting of IEnumerable<T> in MVC 2
本文关键字:in MVC gt of lt Sorting IEnumerable | 更新日期: 2023-09-27 17:50:03
我的服务层返回一个IEnumerable<ResortsView>
到我的控制器,我必须提供一个选项,按以下标准对UI上的结果进行排序:价格(不包括零价格项目),供应商名称&评级。下面是我的对象/类的代码片段:
[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>
中处理结果排序的最好方法是什么?
使用LINQ堆栈的OrderBy
方法:
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));
如果你想使用动态LINQ库,这里有一些说明和下载链接。
你需要让你的动作接受一些排序参数:
public ActionResult MyAction(string sortField)
{
return View(myService.MyData().OrderBy(sortField));
}