public class ExpressionCall
{
List<Customer> customers = new List<Customer>() {
new Customer() { CustomerID = "A001"},
new Customer() { CustomerID = "A"},
new Customer() { CustomerID = "B001" },
};
string[] starts = { "A", "C", "D" };
public void SelectMore()
{ //根据CustomerID首字母 包含A,C,D动态创建查询
IQueryable<Customer> cus = customers.AsQueryable();
ParameterExpression c = Expression.Parameter(typeof(Customer), "c");
Expression condition = Expression.Constant(false);
foreach (string s in starts)
{
Expression con = Expression.Call(
Expression.Property(c, typeof(Customer).GetProperty("CustomerID")),
typeof(string).GetMethod("Equals", new Type[] { typeof(string) }),
Expression.Constant(s));
condition = Expression.Or(con, condition);
}
Expression<Func<Customer, bool>> end =
Expression.Lambda<Func<Customer, bool>>(condition, new ParameterExpression[] { c });
var cu = cus.Where(end);
}
}
public class Customer
{
public string CustomerID { get; set; }
}

代码如上,参考:http://www.cnblogs.com/blusehuang/archive/2007/07/13/816970.html

其中包含。首字母包含

                    typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) }),
                    typeof(string).GetMethod("Contains", new Type[] { typeof(string) }),

Linq动态查询的更多相关文章

  1. Linq动态查询与模糊查询 ---转

    Linq动态查询与模糊查询(带源码示例) 继LINQ动态组合查询PredicateExtensions讲解 ----- 在用上面的方法时遇到了些问题 解决 LINQ to Entities 不支持 L ...

  2. Linq 动态查询排序

    Linq的排序一般是这样写的: query.OrderBy(x => x.Tel).Skip().Take(); 实际使用中排序字段可能是通过字符类型的参数来设置的,于是想这样实现: query ...

  3. Linq动态查询简易解决之道(原创)

    因为项目需要使用Linq来查询数据,但是在多条件查询时,需要使用一大堆if(...!=string.empty)等判断条件感觉不是很优雅.网上搜索以下,大概找到了两种办法,一种是老外写的一个类,感觉用 ...

  4. 表达式树在LINQ动态查询

    动态构建表达式树,最佳实践版,很实用! public class FilterCollection : Collection<IList<Filter>> { public F ...

  5. c#——表达式树在LINQ动态查询

    一般如果逻辑比较简单,只是存在有的情况多一个查询条件,有的情况不需要添加该查询条件 简单方式这样操作就可以了 public IQueryable<FileImport> DynamicCh ...

  6. linq字符串搜索条件,排序条件-linq动态查询语句 Dynamic LINQ

    在做搜索和排序的时候,往往是前台传过来的字符串做条件,参数的数量还不定,这就需要用拼sql语句一样拼linq语句.而linq语句又是强类型的,不能用字符串拼出来. 现在好了,有个开源的linq扩展方法 ...

  7. LINQ动态查询类--[DynamicLinqExpressions]

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...

  8. 用PredicateBuilder实现Linq动态拼接查询

    在使用Linq查询的时候,特别是如果你在使用Entiry Framwork,有时会遇到动态查询的情况(客户的查询条件是不固定的拼接查询).我们能想到的第一方案应该是拼接SQL,的确这样是可以达到我们的 ...

  9. Linq to sql 实现多条件的动态查询(方法一)

    /// <summary> /// Linq to sql 多字段动态查询 /// </summary> /// <returns></returns> ...

随机推荐

  1. 手动安装mysql

    需要在本机(mac)上装个mysql,看到压缩版的体积最小,结果进入了手工安装的坑(正常有界面可以安装,但安装目录将是/usr/local/mysql),既然入了坑就填上吧. 1.解压到自己选择的目录 ...

  2. selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None;Message: unexpected alert open: {Alert text : 您点击的频率过快!请稍后再试}

    报错 Traceback (most recent call last): File "C:/myFiles/code/cnki/cnki_1/core/knavi.py", li ...

  3. java web service 写入图片到web/img/

    获取本类service路径,然后字符串截取和拼接 String classpath= this.getClass().getResource("/").getPath(); Str ...

  4. 安装Oracle Database 11g 找不到文件“WFMLRSVCApp.ear” .

    在64位Windows 7 系统下安装Oracle Database 11g 的过程中,出现提示:“未找到文件D:\app\Administrator\product\11.2.0\dbhome_1\ ...

  5. 【中间件安全】IIS6安全加固规范

    1. 适用情况 适用于使用IIS6进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...

  6. Oracle创建表空间以及用户语句

    记录一下常用的语句,便于以后使用… create tablespace TABLESPACENAMEdatafile 'E:\Data\ORACLEDATA\XXX.dbf' size 200M au ...

  7. layui---表单验证

    使用layui,使用它的表单验证也是比不可少的,下面就来总结下: <!-- 不用form 用div也可以 --> <form class="layui-form" ...

  8. 11.5vue(5)完结

    2018-11-5 19:03:50 老师用了五天把vue昨晚,前后端分离!就是 后端给前端接口,前端用vue,建个项目,然后用vuex接受数据!全在前端显示 后端不涉及任何前端页面!前端用vue把页 ...

  9. openssl内核升级

    由于工作需要,防止安全漏洞需要对openssl升级现在整理出centos6.8和ubuntu14.4升级 centos升级openssl 1.首先去OpenSSL的网站 https://www.ope ...

  10. ERP实施顾问--理解客户的解决方案与实际需求

    在企业进行信息化时实施方的顾问都会来现场进行"需求调研",再根据"调研"的结果进行双方确认,确认后按此蓝本进行开发实施. 一切看上去都很美好,需求明确.开发顺利 ...