public static class LinqHelper
{
//NHibernate.Hql.Ast.HqlBooleanExpression
public static Expression<Func<T, bool>> True<T>()
{
return f => true;
} public static Expression<Func<T, bool>> False<T>()
{
return f => false;
} public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
InvocationExpression invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
} /// <summary>
/// 排序
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="source"></param>
/// <param name="propertyStr"></param>
/// <param name="order"></param>
/// <returns></returns>
public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string propertyStr, string order)
where TEntity : class
{
ParameterExpression param = Expression.Parameter(typeof (TEntity));
PropertyInfo property = typeof (TEntity).GetProperty(propertyStr);
Expression propertyAccessExpression = Expression.MakeMemberAccess(param, property);
LambdaExpression le = Expression.Lambda(propertyAccessExpression, param);
Type type = typeof (TEntity);
MethodCallExpression resultExp = Expression.Call(typeof (Queryable),
order == "desc" ? "OrderByDescending" : "OrderBy",
new[] {type, property.PropertyType}, source.Expression, Expression.Quote(le));
return source.Provider.CreateQuery<TEntity>(resultExp);
} }

  

调用:
var member = LinqHelper.True<Memberuser>(); //申请表达式 最后加入 where 条件语句
var query = db.Members.Where(member).ToList(); //加入表达式

  

LinqHelper拓展的更多相关文章

  1. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  2. RabbitMQ + PHP (二)AMQP拓展安装

    上篇说到了 RabbitMQ 的安装. 这次要在讲案例之前,需要安装PHP的AMQP扩展.不然可能会报以下两个错误. 1.Fatal error: Class 'AMQPConnection' not ...

  3. chrome拓展开发实战:页面脚本的拦截注入

    原文请访问个人博客:chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过requirejs进行统一管理, ...

  4. 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展

    上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...

  5. jQuery的DOM操作实例(2)——拖拽效果&&拓展插件

    一.原生JavaScript编写拖拽效果 二.jQuery编写的拖拽效果 三.在jQuery中拓展一个拖拽插件

  6. 使用TypeScript拓展你自己的VS Code!

    0x00 前言 在前几天的美国纽约,微软举行了Connect(); //2015大会.通过这次大会,我们可以很高兴的看到微软的确变得更加开放也更加务实了.当然,会上放出了不少新产品和新功能,其中就包括 ...

  7. Unity、c#中的拓展方法讲解

    很早以前看过这个东西,但是没有真正的用到过,希望之后会用到上面的方法, 大概的意思是这样的c#中尤其在用Unity的时候,已有的框架提供给我们一些固定的方法,但是有时我们想对这些方法进行修改, 这时我 ...

  8. 关于java中自增,自减,和拓展运算符的小讨论

    java中运算符很多,但是能深入讨论的不算太多.这里我仅仅以++,*=为例做讨论. 例:++ i=0; i=i++ + ++i;//i=1 i=++i+i++;//i=2 i=i++ -++i;//i ...

  9. windows 平台 php_Imagick 拓展遇到的那些坑!

    我的php环境是使用了phpstudy 下载地址:http://www.phpstudy.net/a.php/211.html 最终并未解决问题 持续更新~ 1.首先到官网上 http://www.i ...

  10. linux下php-mysql拓展安装

    今天遇到一个奇怪的问题: 在服务器A上部署应用,在服务器B上部署数据库和缓存. 服务器A:apache2.2,php5.3 服务器B:mysql5.5,redis2.4 问题现象: 本地远程连接服务器 ...

随机推荐

  1. 多项式算法再探:FMT 和 FWT

    我们知道,FFT 和 NTT 可以用来解决下面这种问题: \[c_k=\sum_{i+j=k}a_ib_j \] 不过,这并不是卷积的全部形态,比如下面这种: \[c_k=\sum_{i*j=k}a_ ...

  2. [luogu1248] 加工生产调度 题解

    考虑 \(i\) 排在 \(j\) 前的条件是 \(a_i+\max(a_j,b_i)+b_j\le a_j+\max(a_i,b_j)+b_i\),然后发现这一坨东西是皇后游戏中的倒数第三个式子,直 ...

  3. MOS管耗散功率的计算

    MOS管的功率,一般是指Maximum Power Dissipation--Pd,最大的耗散功率,具体是指MOS元件的容许损失,可从产品的热阻上求得.当Tc=25度时,通过附加最大容许损耗Pd,则变 ...

  4. FreeModbus源码详解(转)

    学习转载原文链接: https://blog.csdn.net/golf_research/article/details/52240739 https://blog.csdn.net/u014748 ...

  5. QT5笔记: 21. QStandardItemModel

    QStandardItemModel 存放数据 QItemSelectionModel 选择项模型 例子:本例子中QListView 没有做任何处理,只是拖放至ui文件,设置了布局 mainwindo ...

  6. Sqoop - [01] 概述

    将关系型数据库(Oracle.MySQL.PG等)数据与Hadoop数据进行转换的工具. 一.Sqoop1和Sqoop2的区别 Sqoop1由client端直接接入Hadoop,任务通过解析生成对应的 ...

  7. Qt 重载QComboBox,实现右侧删除键

    文章目录 Qt 重载QComboBox,实现右侧删除键 前言 方案 设置下拉箭头图标 设置QComboBox内容为空 自定义showPopup函数 定位鼠标 屏蔽鼠标右键 最终控制下拉代码 效果图 代 ...

  8. SSH登录:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    错误信息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICAT ...

  9. NumPy学习11

    今天学习了NumPy线性代数 21, NumPy线性代数 numpy_test11.py : import numpy as np ''' 21, NumPy线性代数 NumPy 提供了 numpy. ...

  10. Oracle中IMP导入数据时提示字符集不一致解决

     生产环境中经常使用到Oracle的IMP导入和EXP导出来功能来达到数据迁移的目的,通常在源数据库和目标数据库中查询字符集是否致, 测试环境中导入IMP导入报错信息如下: 导入命令如下: [orac ...