.net – linq排序列表(MyObjects)
发布时间:2020-05-25 04:44:01 所属栏目:asp.Net 来源:互联网
导读:如何通过我的对象列表中的传递字符串值进行排序?我需要在我的List(Of)对象上进行分页和排序,分页没有问题,但我不知道是谁让Order By工作. 这是我目前正在做的事情,它的工作很棒: Return returnReports.Skip(PageSize * (PageNumber-1)).Take(PageSize).ToLi
|
如何通过我的对象列表中的传递字符串值进行排序?我需要在我的List(Of)对象上进行分页和排序,分页没有问题,但我不知道是谁让Order By工作. 这是我目前正在做的事情,它的工作很棒: Return returnReports.Skip(PageSize * (PageNumber-1)).Take(PageSize).ToList() 我如何让它工作? Return returnReports.OrderBy(SortColumn).Skip(skip).Take(PageSize).ToList() SortColumn是传递的字符串值 解决方法VBModule 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 – 服务层是否可以访问HttpContext?
- ASP.NET通过分布式Session提升性能
- asp.net-mvc-3 – 了解网站是否在MVC中编写的技巧?
- asp.net-mvc – 在MVC/ASP.NET MVC中正确使用Model vs Cont
- asp.net-mvc – 使用AutoMapper的控制器上的单元测试
- asp.net – System.Net.Cookie和System.Web.HttpCookie有什
- asp.net-mvc – 在MVC中使用ViewModels进行POST操作
- asp.net-mvc – 通过删除空格打破我的calc语句的MVC捆绑?
- asp.net-mvc – 自定义HtmlHelper呈现文本而不是标记
- asp.net – ASP MVC – 默认的HTTP标头有任何常量吗?
推荐文章
站长推荐
- asp.net-mvc – 未设置localhost cookie
- asp.net-mvc – MVC DDD:可以将存储库与控制器中
- .net – ListView中Bind语句中的格式化日期
- asp.net – 如何知道为什么IIS应用程序池被回收
- asp.net-mvc – 在ASP.NET MVC中的View和Partial
- ASP.NET MVC和IE缓存 – 操作响应头无效
- asp.net-mvc – 如何使用Linq to SQL配置mvc min
- asp.net-mvc – ASP.NET MVC 4 – 301重定向Rout
- ASP.Net Cache是否在不同的用户会话之间共享?
- asp.net – Page.IsValid如何工作?
热点阅读
