




















这是一个创建于 613 天前的主题,其中的信息可能已经有所发展或是发生改变。
像下面这样, 是查不出来的. 是有什么特殊姿势我不会的吗? google 了半天也没找出来怎么传递集合参数进去.
var ids = new List<string>() { "A001", "B001" };
appDbContext.RackTransfers.FromSql($"select * from RackTransfers where Id IN ({ids})");
第 1 条附言 · 2024 年 10 月 9 日
下面这样的我是知道的, 但是我这里问的是用 FromSql 时怎么传参. 要知道很多复杂查询, 没法用 Where 表达出来的.
dbContext.Where(e => ids.Contains(e.Id))
1 corcre 2024 年 10 月 9 日可能就是不支持的吧 之前上网搜了一下发现没解决方案就放弃了, 现在一般要不就把 ids 给先处理好传进去(处理成('A001','B001')然后字符串拼接) |
2 jiangzm 2024 年 10 月 9 日EF.Functions.Like 或者 Contains |
3 luojianxhlxt 2024 年 10 月 9 日你这是 sql 语句,得用 string.join 拼接成 where id in('A001','A002') |
4 liuliuliuliu 2024 年 10 月 9 日1.支持 |
5 liuliuliuliu 2024 年 10 月 9 日题外话,不知道你怎么搜索的,怎么会没有相关资料的呢? |
6 wu00 2024 年 10 月 9 日appDbContext.RackTransfers.FromSql($"select * from RackTransfers where Id IN ('{string.Join("','", ids)}')"); |
7 bthulu 2024 年 10 月 9 日@nikenidage1 你这个大家都知道, 但是很多情况下, 没法这样查. 比如取 group by 后组内第一条返回一个集合, 目前 ef core 还不支持这个功能, 官方说至少的 efcore10 才有可能支持. |
11 VxLzKg4uLbi32w60 2024 年 10 月 9 日OP 用的什么版本?.NET6 现在是这样,可以用参数化进行传参,可以试试 |
14 bthulu 2024 年 10 月 9 日@a194259440 在.net8.0+efcore8.0 中实测下面两种方式都不行, 直接报错 System.NotSupportedException |
15 bthulu 2024 年 10 月 9 日上面两个示例中, 将 new MySqlParameter("@Ids", ...)改为 new MySqlParameter("Ids", ...), 也是一样的报错 |
16 PopRain 2024 年 10 月 9 日in 的参数化查询语句是这样的:where x in (@0,@1,@2..... ) ; 所以,后台需要把 List 转换为一个个的参数,不知道 efcore 是否有这个功能,我们公司是自己实现的 |
17 beginor 2024 年 10 月 10 日 via Android不知道楼主使用的是什么数据库,如果是 pg 的话可以直接用数组参数 |
18 beginor 2024 年 10 月 10 日楼主用的应该是 mysql , 不支持数组类型,无法使用数组参数, 应该只能按照 16 楼的方法拼接 sql 参数了 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。