Lambda 动态表达式(排序)
网上看到的:
class Program
    {
        static List<User> list = new List<User>()
        {
            new User(){ID=1,Name="Hello",Age=17,Hobby="a"},
            new User(){ID=2,Name="Boy",Age=50,Hobby="z"},
            new User(){ID=3,Name="Girl",Age=33,Hobby="x"},
            new User(){ID=4,Name="Fox",Age=43,Hobby="b"},
            new User(){ID=5,Name="Fire",Age=17,Hobby="f"},
        };
        static void Main(string[] args)
        {
            var q = list.AsQueryable().OrderBy("Name", true);
            q.ToList().ForEach(x => Console.WriteLine(string.Format("ID:{0},Name:{1},Age:{2},Hobby:{3}", x.ID, x.Name, x.Age, x.Hobby)));
            Console.ReadLine();
        }
    }
    public class User
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Hobby { get; set; }
    }
//动态表达式
    public static class Test
    {
        public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string propertyName,
bool asc = true) where TEntity : class
        {
            string command = asc ? "OrderBy" : "OrderByDescending";
            var type = typeof(TEntity);
            var property = type.GetProperty(propertyName);
            var parameter = Expression.Parameter(type, "p");
            var propertyAccess = Expression.MakeMemberAccess(parameter, property);
            var orderByExpression = Expression.Lambda(propertyAccess, parameter);
            var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType }, source.Expression, Expression.Quote(orderByExpression));
            return source.Provider.CreateQuery<TEntity>(resultExpression);
        }
    }Lambda 动态表达式(排序)的更多相关文章
- 记录Linq中lambda动态表达式的使用方式
		项目中有的时候我们会用到动态表达式的方式去查询数据,这里简单记录下个人的使用方式,方便使用↓ //构建参数表达式 ParameterExpression parameter = Expression. ... 
- lambda表达式排序
		lambda表达式排序简洁 1.给一个字符串数组: String[] atp = {"2016-06-28 08:00:00", "2017-12-05 19:17:32 ... 
- Python的lambda函数与排序
		Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作 目录(?)[+] 前几天 ... 
- C#动态表达式计算
		C#动态表达式计算 应该有不少人开发过程中遇到过这样的需求,我们直接看图说话: 如上图所示,其中Entity为实体类,其中包括五个属性,该五个属性的值分别来自于数据库查询结果: 用户通过可视化界面进行 ... 
- C#动态表达式计算(续2)
		上两篇废话太多,这一次我就不多说了,由于代码比较简单,可以直接从https://github.com/scottshare/DynamicExpress.git地址下载. 以下说明一下使用方法: Dy ... 
- VS2012 编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
		今天编译公司项目,原本项目是3.5,由于现在要用到dynamic ,把target 改为4.0 ,编译时 报错误 “找不到编译动态表达式所需的一个或多个类型.是否缺少引用?”,然后根据另一个提示排错 ... 
- Lambda的分类(语句Lambda和表达式Lambda)
		学习自 <C#本质论> Overview 在上一文中,我们简而又简的了解了一下,匿名方法和Lambda表达式,关于匿名方法这里暂且不表,本文我们来更加详细的了解一下Lambda表达式. 本 ... 
- 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?
		提示“找不到编译动态表达式所需的一种或多种类型.是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用? ”错误 解决方法: 将引入的COM对象(misc ... 
- C#调用Excel报 error CS1969: 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
		转自[http://blog.csdn.net/bodybo/article/details/43191319] 程序需要读取Exel文件,有如下代码段 object oMissing = Syste ... 
随机推荐
- 漫画 | Redis常见面试问题(一)
			最近,阿音在为接下来的一场面试做准备,其中的内容包括redis,而且redis是重点内容. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数 ... 
- Php7 开发笔记
			Ubuntu环境安装 http://www.jianshu.com/p/1d312d9f1be1 sudo apt-get install python-software-properties sof ... 
- vuex mapState、mapGetters、mapActions、mapMutations的使用
			例子: index.js import Vue from 'vue' import Vuex from 'vuex' import mutations from './mutations' impor ... 
- Vue(三)之前端路由
			01-前端路由 1.前端路由的实现原理 vue+vue-router 主要来做单页面应用(Single Page Application) 为什么我们要做单页面应用? (1)传统的开发方式 url改变 ... 
- 浅谈一类无关序列有前缀和性质的统计问题的离线解法 BZOJ3626
			每次询问[l,r]区间,但所有信息是按另一种序列给出的,因此无法使用区间数据结构做这种题.将每个询问改为[1,x],考虑离线,则从1~n依次修改并查询即可. BZOJ3626 给定一颗树,每次询问给定 ... 
- HDU - 1166 - 敌兵布阵 线段树的单点修改,区间求和
			#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ... 
- MySQL添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法
			MySQL添加新用户时出现如下报错,如下图: 经过查资料了解到: mysql用户表的中某些字段不能为空,没有默认值,其实是操作错误,mysql添加用户是不能这样直接insert user表的. 改为以 ... 
- vscode中php断点调试方法!
			一.PHP的代码断点调试 1.打开vscode的首选项设置,添加"php.validate.executablePath": "D:\\newXampp\\php\\ph ... 
- html总结:固定表格中单元格宽度
			当然要提前设置好table的width值,然后再写这个,使得每列宽度都相等. <style> table { table-layout: fixed; } </style> 
- vue单页面模板说明文档(2)
			Linter Configuration This boilerplate uses ESLint as the linter, and uses the Standard preset with s ... 
