【发布时间】:2011-10-13 12:21:15
【问题描述】:
我正在创建一个可以接收任何 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 的形式: Where HouseNr IN (1, 3, 5) 数字 (1, 3, 5) 在字符串数组(或任何其他字符串列表)中可用。
知道基本查询可以是任何东西,我该如何实现这一点?
【问题讨论】:
-
我认为没有一个人能理解您的问题。您可以使用 Dynamic Linq 生成
OR语句的列表,尽管这与IN子句完全相同。
标签: c# linq linq-to-sql dynamic