本文章转载:http://www.cnblogs.com/guyun/archive/2012/10/18/2729888.html

需求是这样的,有一张表tbl(Key[int],Value[string]),数据存储如下:

 
Key Value
1 -a-b-
2 -a-
3 -c-e-
4 -f-g-

现在的目的是要从tbl表中取出所有Value字段的值和List的值匹配的记录。本地有个List<string>{"a","b","c"};

传统的T-SQL写法是:select * from tbl where Value like '%a%' or Value like '%b%' or Value like '%c%' 如何用linq实现呢?

我第一个想到的是这样的:

var query=from q in tbl select q;

foreach(var item in list) { query=query.Where(r=>r.Value.Contains(item)); }

但是这样做生成的T_SQL语句是:select * from tbl where Value like '%a%' and Value like '%b%' and Value like '%c%'

同样也可以像SQL语句这样:select * from tb1 as a inner join tb2  as b on a.value like  "%'+b.value; 

唉,真蛋疼,百度了好多全都无解,最后看到了一篇帖子,给了我点启发,帖子链接如下:http://social.msdn.microsoft.com/Forums/de-DE/238/thread/b8ea22a7-f733-4ff5-8333-0dd3fe558076

经过思路整理,最终代码如下:

    class Program

    {

        static void Main(string[] args)

        {

            var dt = new DataTable();

            dt.Columns.Add("Key", typeof (int));

            dt.Columns.Add("Value", typeof (string));

            dt.Rows.Add(1, "-a-b-");

            dt.Rows.Add(2, "-a-");

            dt.Rows.Add(3, "-c-e-");

            dt.Rows.Add(4, "-f-g-");

            var list = new List<string> {"a", "b", "c"};

            var query = from q in dt.AsEnumerable()

                        from t in list

                        where q.Field<string>("Value").Contains(t)

                        select q;

            var vdt = query.Distinct().CopyToDataTable();

            foreach (DataRow dr in vdt.Rows)

            {

                Console.WriteLine(dr["Key"] + "\t" + dr["Value"]);

            }

        }

    }

大功告成,输出结果如下:

1 -a-b-

2 -a-

3 -c-e-

LINQ多条件OR模糊查询的更多相关文章

  1. Linq 两个集合模糊查询

    1.Linq的likelist<string> l=new list<string>();l.add("ss")l.add("ss123" ...

  2. 动态多条件mysql模糊查询

    sql拼接函数 public static String Instructor_sql_whole_study(String[] val_ids,String[] val_values) { Stri ...

  3. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  4. 实现多条件模糊查询SQL语句

    很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名.性别.电话号...作为数据库中的字段名. 通常写一个简单的模糊查询的SQL语句格式可以如下例: sql="selec ...

  5. 10月30日下午 PHP精确查询(模糊查询、模糊+关键字共同查询)

    1.一个条件的模糊查询 <body> <br /> <form action="main.php" method="post"&g ...

  6. C#EF中,使用类似于SQL中的% 模糊查询

    最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...

  7. 转 --简单解决Linq多条件组合问题

    本文笔者用清晰的实例,解决了Linq多条件问题,思路十分的清晰,笔者也很细心的做了描述,希望能给你带来帮助. 最近有个项目准备功能改版,师兄吩咐:尽可能地做到万般皆Linq,所以很多东西都要从存储过程 ...

  8. Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询

    在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...

  9. ibatis动态多条件查询及模糊查询(oracle,mysql,sql)

    首先是模糊查询的问题,开始时我使用如下条件:select * from user where name like '%#value#%'. 可是怎么也不行,好像还报错了.后来在网上找到了解决方法,就是 ...

随机推荐

  1. 关于Zen Coding:css,html缩写

    zen coding 是一个俄罗斯人写的编辑器(支持大部分现下流行的编辑器)插件,其安装也是非常简单,只要安装插件,然后在项目中拷贝js文件就可以.像Webstorm6.0.2中已经包含这样的插件.什 ...

  2. VBA开发经验总结之二:灵活运用工作表属性

    近期,在帮公司写一个销售管理的工具,高强度的开发激发了我对一些以前既有方式的看法,特将几点开发经验总结在此. 1.将工作表及窗体的公共变量及特征变量写为工作表或窗体的属性.此种方法的优点: ① 采用面 ...

  3. php中include文件夹分析

    include是包含很多php文件的一种汇总:一般放在文件夹最外层. <?php header("content-type:text/html;charset=utf-8") ...

  4. jQuery 插件写法

    一.jQuery插件的类型 1. jQuery方法 很大一部分的jQuery插件都是这种类型,由于此类插件是将对象方法封装起来,在jQuery选择器获取jQuery对象过程中进行操作,从而发挥jQue ...

  5. apache 网址重定向

    参考了以下网站,终于基本搞定b2c网站伪静态.剩下的就是体力活了. 回家后整理下. http://yp.oss.org.cn/software/show_resource.php?resource_i ...

  6. Android中基于Socket的网络通信

    1. Socket介绍 2. ServerSocket的建立与使用 3. 使用ServerSocket建立聊天服务器-1 4. 使用ServerSocket建立聊天服务器-2 5. 在Android中 ...

  7. Delphi 停靠技术的应用

    一.基础知识介绍 1.VCL组件的基础知识 在TWinControl类中有一个DockSite属性(boolean),它的作用是是否允许别的控件停靠在它的上面:在TControl类中有一个DragKi ...

  8. <meta http-equiv="pragma" content="no-cache"/>-备

    <meta http-equiv="pragma" content="no-cache"/> 网页中常常看见有这样的标记,他们是清浏览器缓存用的啊, ...

  9. String和bytes的编码转换

    import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; /** * @author 作者 E-mai ...

  10. [BZOJ 1086] [SCOI2005] 王室联邦 【树分块】

    题目链接:BZOJ - 1086 题目分析 这道题要求给树分块,使得每一块的大小在 [B, 3B] 之间,并且可以通过一个块外的节点(块根)使得整个块联通. 那么我们使用一种 DFS,维护一个栈,DF ...