拼linq 时网上整理的一个类
public static class DynamicLinqExpressions
{
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>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
}
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
}
}
用法:
Expression<Func<DataRow, bool>> expressionResult = DynamicLinqExpressions.True<DataRow>();
if (!string.IsNullOrEmpty(staffName))
{
expressionResult.And(res => res.Field<string>("StaffName").Contains(staffName));
}
if (!string.IsNullOrEmpty(staffCode))
{
expressionResult.And(res => res.Field<string>("StaffCode")==staffCode);
}
if (!string.IsNullOrEmpty(staffAllPing))
{
expressionResult.And(res => res.Field<string>("StaffAllPing").Contains(staffAllPing));
}
if (!string.IsNullOrEmpty(staffShortPing))
{
expressionResult.And(res => res.Field<string>("StaffShortPing").Contains(staffShortPing));
}
if (!string.IsNullOrEmpty(selTopCompany) && selTopCompany!="-1")
{
expressionResult.And(res => res.Field<string>("CompanyUniqueCode") == selTopCompany);
}
if (!string.IsNullOrEmpty(selTopDepartment) && selTopDepartment!="-1")
{
expressionResult.And(res => res.Field<string>("DeptUniqueCode") == selTopDepartment);
}
if (!string.IsNullOrEmpty(selTopQuarter) && selTopQuarter!="-1")
{
expressionResult.And(res => res.Field<string>("QuartersUniqueCode") == selTopQuarter);
}
if (orderAscOrDesc == "DESC")
{
dataList = cacheList.AsQueryable().Where(expressionResult).OrderByDescending(row => row.Field<int>("StaffId")).Select(row => row).Skip(skipNum).Take(pageSize);
}
else
{
dataList = cacheList.AsQueryable().Where(expressionResult).OrderBy(row => row.Field<int>("StaffId")).Select(row => row).Skip(skipNum).Take(pageSize);
}
DataTable tempDt = new DataTable();
foreach (DataRow dtrow in dataList)
{
object[] o = dtrow.ItemArray;
DataRow dr= tempDt.NewRow();
dr = dtrow;
tempDt.Rows.Add(dr);
}
return new QueryResult();
}
catch (Exception ex)
{
throw ex;
}
}
拼linq 时网上整理的一个类的更多相关文章
- Tomcat启动时自动加载一个类
有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...
- 如何在tomcat启动时自动加载一个类
有时候在开发web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...
- tomcat启动时自动加载一个类 MyServletContextListener
目的: 我们知道在tomcat启动后,需要页面请求进行驱动来执行操作接而响应.我们希望在tomcat启动的时候能够自动运行一个后台线程,以处理我们需要的一些操作.因此需要tomcat启动时就自动加载一 ...
- 自己整理的一个访问SQLite3数据库的C++类
原文地址:自己整理的一个访问SQLite3数据库的C++类作者:vigra 近日,对SQLite3的使用进行了研究.真不愧是优秀的嵌入数据库,API接口也极其简捷.基本上只要使用以下几个接口就能完成数 ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
- 当一个类、一个实例域、方法被定义为private、public 时意味着什么
1.设计private public的原因 2.当一个类.一个实例域.方法被定义为private.public 时意味着什么
- 一个类有两个方法,其中一个是同步的,另一个是非同步的; 现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法?
一个类有两个方法,其中一个是同步的,另一个是非同步的:现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法? 答案:可以 验证 package com.my.te ...
- 【问题】多重继承时,super函数只初始化继承的第一个类,不初始化第二个类。
class A(object): def __init__(self): print("init class A") class B(object): def __init__(s ...
- 2.spring源码-BeanPostProcessor后置处理之ApplicationContextAwareProcessor,实现spring容器中某一个类的bean对象在初始化时需要得到Spring容器内容。
需求:我们的需求是,在spring初始化完毕时,使我们自定义一个类Bird类可以得到spring容器内容. 实现步骤: 1.首先我们来看一下ApplicationContextAwareProcess ...
随机推荐
- 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译
作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...
- [LintCode] Shape Factory 形状工厂
Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...
- vsphere平台为win系统动态扩展磁盘
1.关闭win虚拟机 2.在vcenter管理中加大磁盘空间 3.开启win虚拟机(此时磁盘并没有加大) 4.打开cmd命令行: 进入分区管理--->查看磁盘--->选择磁盘---> ...
- linux笔记五-------编辑器
1. 三种模式 命令(默认).尾行.编辑模式 2. 尾行模式 : :q 退出vi编辑器 :w 保存修改 :wq 保存并退出编辑 :q! ...
- Hibernate HQL的update方法详解
虽然hibernate提供了许多方法对数据库进行更新,但是这的确不能满足开发需要.现在讲解一下用hql语句对数据进行更新. 不使用参数绑定格式String hql="update User ...
- 输入n个整数,输出其中最小的k个
描述 输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsigned ...
- Eclipse 官方简体中文语言包下载地址及安装方法
Eclipse 官方简体中文语言包下载地址及安装方法 打开Eclipse Babel Project 主页: http://www.eclipse.org/babel/downloads.php 根据 ...
- php课程---JavaScript改变HTML中的元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 利用session完成用户登陆
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.L ...
- Json的语法及使用方法
Json的语法及使用方法 Json(JavaScript Object Notation)对象表示标识,是一种轻量级的数据交换语言,比XML更容易解析,独立于语言和平台. 语法规则: 对象用{}保存 ...