IEnumerable的排序在MVC 2中

发布于 2024-11-01 01:10:23 字数 993 浏览 0 评论 0原文

我的服务层向我的控制器返回一个 IEnumerable,并且我必须提供一个选项来按以下标准对 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 内结果排序的最佳方法是什么?

My Service layer returns a IEnumerable<ResortsView> to my Controller and I have to provide an option to SORT the results on UI by following criteria: Price (Excluding ZERO Price Items), SupplierName & Rating. Here is the code snippet of my objects/classes:

[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; }
}

What is the best way to handle sorting of results inside IEnumerable<ResortsView>?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

救星 2024-11-08 01:10:23

使用 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));

Use the OrderBy method of the LINQ stack:

IEnumerable<ResortsView> source = GetResorts();
var model = source.OrderBy(rv => rv.CheckInTime);

To order by the lowest, non-zero price in ResortProducts:

var model = source.OrderBy(rv => rv.ResortProducts.Where(p => p.Price > 0).Min(p => p.Price));
爱殇璃 2024-11-08 01:10:23

如果您想使用动态 LINQ 库,那么这里是一些说明和下载链接。

您需要让您的操作接受一些排序参数:

public ActionResult MyAction(string sortField)
{
    return View(myService.MyData().OrderBy(sortField));
}

Most likely if you'll want to use the Dynamic LINQ library, here are some instructions and a download link.

You'll need to have your action accept some sorting parameters:

public ActionResult MyAction(string sortField)
{
    return View(myService.MyData().OrderBy(sortField));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文