c# – 如何使用动态Linq实现tsql“IN”等效

我正在创建一个可以接收任何Linq查询的通用表单(C#).在这种形式中,我希望能够添加过滤器(WHERE子句).对于像’=’,’’,’Like’等操作符,我可以做像IQueryable.Where(someFieldname“ @ 0”,someCriteria)这样的事...

我正在创建一个可以接收任何Linq查询的通用表单(C#).在这种形式中,我希望能够添加过滤器(WHERE子句).对于像’=’,’>’,’Like’等操作符,我可以做像IQueryable.Where(someFieldname“> @ 0”,someCriteria)这样的事情.但是,当我想能够做相当于T-sql“IN”时,我完全迷失了.我已经搜索了几个小时,但找不到实现它的方法.

在考虑它时,应该可行的方法是将IN子句的值放在字符串数组或其他简单的字符串列表中.然后使用基本查询加入此列表.但是,当基本查询可以是任何查询时,如何加入这两个?

例:
说我的基本查询是这样的:

IQueryable<Object> q = from a in db.Adresses
                       select new { a.Street, a.HouseNr };

在我希望能够像这样过滤HouseNr的形式:HouseNr IN(1,3,5)
数字(1,3,5)在字符串数组(或任何其他字符串列表)中可用.

我怎么能实现这一点,知道基本查询可以是什么?

解决方法:

int[] list = new[]{1, 3, 5};
IQueryable<Object> q = from a in db.Adresses
                       where list.Contains(a.HouseNr)
                       select new { a.Street, a.HouseNr };

本文标题为:c# – 如何使用动态Linq实现tsql“IN”等效

基础教程推荐