ASP.NET MVC 4订购的项目集 [英] ASP.NET MVC 4 ordered set of items

查看:43
本文介绍了ASP.NET MVC 4订购的项目集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好.
最近我遇到了这样的问题.
在我的项目中,我有一个房间列表(简单的无序集合).

如何实现设置此房间在第二页中显示的顺序的功能?
有什么想法吗?

第一个想法是创建一个

Hi everyone.
Recently i have encountered with such issue.
In my project i have a list of rooms (simple unordered set).

How can i implement ability of setting order in which this rooms will appears in second page?
Any thoughts?

The firs idea is to create a

Queue<Rooms>

,并在其下执行适当的操作.
但我不确定这是否正确....

, and perform appropriate actions under it.
But i''m not sure if it''s a right way ....

推荐答案

订购队列:
To order a Queue:
var rooms = new Queue<Rooms>();

var orderByNumberAsc = rooms.OrderBy(r => r.Number);
var orderByNumberDesc = rooms.OrderByDescending(r => r.Number);



要基于字符串动态排序,您需要扩展:



To dynamically order this based on string you need an extension:

public static IQueryable<T> OrderBy<T>(this IQueryable<T> items, string propertyName)
{
    var typeOfT = typeof(T);
    var parameter = Expression.Parameter(typeOfT, "parameter");
    var propertyType = typeOfT.GetProperty(propertyName).PropertyType;
    var propertyAccess = Expression.PropertyOrField(parameter, propertyName);
    var orderExpression = Expression.Lambda(propertyAccess, parameter);

    var expression = Expression.Call(typeof(Queryable), "OrderBy", new[] { typeOfT, propertyType }, items.Expression, Expression.Quote(orderExpression));
    return items.Provider.CreateQuery<T>(expression);
}



然后,您可以按字符串值排序:



Then you can order by a string value:

var rooms = new Queue<Rooms>().AsQueryable();
var orderByNumberAsc = rooms.OrderBy("Number");



您可以轻松地为OrderByDescending(string propertyName)
创建扩展名
还是使用switch语句的动态方法少一些:



And you could easy create an extension for OrderByDescending(string propertyName)

Or a little less dynamic approach using switch statement:

switch (orderByParam)
{
    case "Number":
        rooms = rooms.OrderBy(r => r.Number);
        break;
    case "Capacity":
        rooms = rooms.OrderBy(r => r.Capacity);
        break;
}


这篇关于ASP.NET MVC 4订购的项目集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆