”、“Like”等运算符,我可以执行 IQueryable.Wh-6ren">
gpt4 book ai didi

c# - 如何使用动态Linq实现等效于tsql "IN"

转载 作者:太空狗 更新时间:2023-10-29 23:10:25 24 4
gpt4 key购买 nike

我正在创建一个可以接收任何 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) 在字符串数组(或任何其他字符串列表)中可用。

知道基本查询可以是任何内容,我如何才能做到这一点?

最佳答案

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",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com