天天看点

LINQ 如何动态创建 Where 子查询

还是那句话,十年河东,十年河西,莫欺少年穷!

学无止境,精益求精...

今天探讨下如何构造动态的LINQ子查询

LINQ,相信大家都写过,很简单,下面以一个基本的范例说明下:

OK,上述的LINQ查询很简单

现在需求有所改变:查询姓 张 李 王 的男人

LINQ 变更如下:

现在需求二次变更如下:查询姓 张 李 王 的男人 并且 年龄要大于20岁

LINQ 二次变更如下:

好了,如果您认为上述构建WHERE子句的方式就是动态构建的话,那么本篇博客就没有什么意义了!

那么什么样的方式才是真正的动态构建呢?

OK,咱们进入正题:

在此我提出一个简单需求如下:

我相信我的需求提出后,你用上述方式就写不出来了,我的需求如下:

请根据数组中包含的姓氏进行查询:

数组如下:

在这里,有人可能会立马想到:分割数组,然后用十个 || 进行查询就行了!

我要强调的是:如果数组也是动态的呢?长度不定,包含的姓氏不定呢?

呵呵,想必写不出来了吧!

还好,LINQ也有自己的一套代码可以实现(如果LINQ实现不了,那么早就没人用LINQ了):

时间问题,就不多写了,直接粘贴代码了

完整的方法是:

LINQ 如何动态创建 Where 子查询
LINQ 如何动态创建 Where 子查询

View Code

需要指出的是:

LINQ 如何动态创建 Where 子查询

生成的LINQ子查询类似于:c=>c.Tags.Contains(s) || c=>c.Alias.Contains(Alias)....

@陈卧龙的博客