.net – linq排序列表(MyObjects)
发布时间:2020-12-16 00:12:38 所属栏目:asp.Net 来源:网络整理
导读:如何通过我的对象列表中的传递字符串值进行排序?我需要在我的List(Of)对象上进行分页和排序,分页没有问题,但我不知道是谁让Order By工作. 这是我目前正在做的事情,它的工作很棒: Return returnReports.Skip(PageSize * (PageNumber-1)).Take(PageSize).ToL
如何通过我的对象列表中的传递字符串值进行排序?我需要在我的List(Of)对象上进行分页和排序,分页没有问题,但我不知道是谁让Order By工作.
这是我目前正在做的事情,它的工作很棒: Return returnReports.Skip(PageSize * (PageNumber-1)).Take(PageSize).ToList() 我如何让它工作? Return returnReports.OrderBy(SortColumn).Skip(skip).Take(PageSize).ToList() SortColumn是传递的字符串值 解决方法
VB
Module OrderByExtensions <System.Runtime.CompilerServices.Extension()> _ Public Function OrderByPropertyName(Of T)(ByVal e As IEnumerable(Of T),ByVal propertyName As String) As IOrderedEnumerable(Of T) Dim itemType = GetType(T) Dim prop = itemType.GetProperty(propertyName) If prop Is Nothing Then Throw New ArgumentException("Object does not have the specified property") Dim propType = prop.PropertyType Dim funcType = GetType(Func(Of,)).MakeGenericType(itemType,propType) Dim parameter = Expression.Parameter(itemType,"item") Dim exp = Expression.Lambda(funcType,Expression.MakeMemberAccess(parameter,prop),parameter) Dim params = New Object() {e,exp.Compile()} Return DirectCast(GetType(OrderByExtensions).GetMethod("InvokeOrderBy",Reflection.BindingFlags.Static Or Reflection.BindingFlags.NonPublic).MakeGenericMethod(itemType,propType).Invoke(Nothing,params),IOrderedEnumerable(Of T)) End Function Private Function InvokeOrderBy(Of T,U)(ByVal e As IEnumerable(Of T),ByVal f As Func(Of T,U)) As IOrderedEnumerable(Of T) Return Enumerable.OrderBy(e,f) End Function End Module C# public static class OrderByExtensions { public static IOrderedEnumerable<T> OrderByPropertyName<T>(this IEnumerable<T> e,string name) { var itemType = typeof(T); var prop = itemType.GetProperty(name); if (prop == null) throw new ArgumentException("Object does not have the specified property"); var propType = prop.PropertyType; var funcType = typeof(Func<,>).MakeGenericType(itemType,propType); var parameter = Expression.Parameter(itemType,"item"); var memberAccess = Expression.MakeMemberAccess(parameter,prop); var expression = Expression.Lambda(funcType,memberAccess,parameter); var x = typeof(OrderByExtensions).GetMethod("InvokeOrderBy",BindingFlags.Static | BindingFlags.NonPublic); return (IOrderedEnumerable<T>)x.MakeGenericMethod(itemType,propType).Invoke(null,new object[] { e,expression.Compile() }); } static IOrderedEnumerable<T> InvokeOrderBy<T,U>(IEnumerable<T> e,Func<T,U> f) { return e.OrderBy(f); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用asp.net mvc 2功能与火花浏览引擎
- asp.net-mvc – 如何将模型传递给部分视图
- 【ABP.Net】1.创建项目&介绍框架结构
- JS_单个或多个文件上传_不支持单独修改
- iis – 禁用应用程序池的空闲超时是否有任何危害?
- 如何使用.net MVC 3中的角色测试授权属性?
- asp.net 4.5脚本捆绑也没有bundeling也没有缩小
- 在ASP.NET Web窗体中收集输入值的推荐方法是什么
- 在哪里可以获得有关使用MVC / ASP.NET启动C#编程的一些信息
- asp.net-mvc-2 – 将日期参数传递给RedirectToAction Route
推荐文章
站长推荐
- asp.net-mvc-3 – ASP.NET MVC 3应用程序的扩展?
- asp.net-mvc – 使用jquery进行模型绑定ajax序列
- asp.net-mvc-4 – 使用公共IP地址绑定应用程序
- 为什么ASP.NET尝试为Web服务引用生成临时类?
- asp.net-mvc – 在活动的SignalR连接期间更改用户
- asp.net – 文本框就像一个下划线
- 本地化 – 了解MVC6 RC1中的资源文件
- asp.net – 如何在客户端上为CustomValidator控件
- asp.net – 获取Gridview的Selected行
- asp.net – 在localhost中将IIS设置为Web开发服务
热点阅读