Lambda动态排序通用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks; namespace DataSort
{
public class DataHelper
{
public static IQueryable<T> Sort<T>(IQueryable<T> queryable, string sort, string order)
{
if (string.IsNullOrWhiteSpace(sort))
{
return queryable;
}
var sortExpression = Expression.Parameter(queryable.ElementType);
var selector = Expression.Lambda(Expression.PropertyOrField(sortExpression, sort), sortExpression);
if (order.ToLower() == "asc")
{
return (IQueryable<T>)queryable.Provider.CreateQuery(Expression.Call(typeof(Queryable), "OrderBy", new Type[] { queryable.ElementType, selector.Body.Type }, queryable.Expression, selector));
}
else if (order.ToLower() == "desc")
{ return (IQueryable<T>)queryable.Provider.CreateQuery(Expression.Call(typeof(Queryable), "OrderByDescending", new Type[] { queryable.ElementType, selector.Body.Type }, queryable.Expression, selector));
}
return queryable;
}
}
}
Lambda动态排序通用方法的更多相关文章
- Linq分页排序通用方法
1.通用方法 2.调用 -----------------------------1.------------------------------------------- public class ...
- List对象排序通用方法
import java.util.Collections; import java.util.Comparator; import java.util.List; import java.lang.r ...
- Lambda动态排序分页通用方法
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- Lambda动态排序
private static IList<T> IListOrderBy<T>(IList<T> list, string propertyName) where ...
- linq扩展之动态排序
前两天看QQ群里面,一位朋友问的问题,说在linq中怎么实现动态排序呢,自己想了半天,没有头绪,网上找了下相关的资料,看了下,收益挺多,记录下来. 之前我们没有如果不知道动态排序的方法的话,我们可能会 ...
- List对象排序的通用方法
转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...
- 写一个针对IQueryable<T>的扩展方法支持动态排序
所谓的动态排序是指支持任意字段.任意升序降序的排序.我们希望在客户端按如下格式写: localhost:8000/api/items?sort=titlelocalhost:8000/api/item ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(17)-LinQ动态排序
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(17)-LinQ动态排序 首先修复程序中的一个BUG这个BUG在GridPager类中,把sord修改为s ...
- LinQ动态排序
LinQ动态排序 首先修复程序中的一个BUG这个BUG在GridPager类中,把sord修改为sort这个名称填写错误,会导致后台一直无法获取datagrid的排序字段 本来是没有这一讲的,为了使2 ...
随机推荐
- VMware Player 与 Device/Credential Guard 不兼容
一.问题 当前:使用VMware Workstation 操作:安装docker 结果:电脑重启后,无法打开VMware Wokstation中的虚拟机 错误提示: 二.解决方案: 1. 控制面板-- ...
- BadImageFormatException,未能加载正确的程序集XXX的解决办法
BadImageFormatException,未能加载正确的程序集XXX的解决办法 IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确 ...
- kvm 基础 虚拟机改名
转自:http://www.cnblogs.com/5201351/p/4464350.htm 1.查看所有的kvm虚拟机 [root@5201351_kvm ~]# virsh list --all ...
- 【转】经典网文:追MM与设计模式
设计模式做为程序员的“内功心法”,越来越受到.net 社区的重视,这种变化是很可喜的,Java社区走在了我们的前面,但这种状况也许有一天会发生改变. 从追MM谈Java的23种设计模式1.FACT ...
- 5.SSRF服务器端请求伪造
SSRF(服务端请求伪造):是一种由攻击者构造形成由服务端发起请求的一个安全漏洞. 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而与 ...
- 如何保持blog的高质量(相对于自己的进步而言的)
多写! 多改!! 多删!!!
- Django 之 logging
1. logging 1.1 什么是 logging logging 模块是 Python 内置的日志管理模块,不需要额外安装. 使用: import logging logging.critical ...
- 【关于安装mysql5.6的一些问题总结】
1:安装msyql5.6介质(mysql-5.6.24-winx64.msi)以后没有myslq服务: 解决: 管理员身份cmd进入bin目录: mysqld.exe -install Service ...
- HierarchyId通过父节点创建一个新的子节点
--HierarchyId通过父节点创建一个新的子节点 CREATE TABLE #temp( node HierarchyID ); insert into #temp select '/' uni ...
- Unity 2018中的图形渲染
https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247490249&idx=1&sn=d86083e33d9884 ...