You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用System.Linq.Dynamic生成对应T-SQL LIKE的StartsWith查询语句

在System.Linq.Dynamic中实现StartsWith生成LIKE 'xxx%'的SQL

嘿,我之前也踩过这个坑!你不用直接在Dynamic的Where语句里写原生SQL的LIKE,这个库本身是对应Linq方法的语法来解析的,直接用StartsWith方法就可以自动生成你想要的LIKE 'test%'语句啦。

正确的写法应该是这样的:

// 使用参数化的方式,既安全又能正确解析
.Where("Description.StartsWith(@0)", "test")

这么写之后,动态Linq会自动把它转换成对应的SQL:Description LIKE 'test%',完全符合你的需求。

为什么之前的写法不生效?

直接写.Where("Description LIKE \"test%\"")这种原生SQL语法,Dynamic Linq的解析器是不支持的——它的语法规则是贴近Linq方法调用,而不是直接写SQL语句,所以原生SQL关键字在这里会被当成无效语法处理。

补充几个类似的用法,方便你举一反三:

  • 要实现LIKE '%test'(EndsWith):.Where("Description.EndsWith(@0)", "test")
  • 要实现LIKE '%test%'(Contains):.Where("Description.Contains(@0)", "test")

另外,用@0这种参数占位符的方式还能避免SQL注入风险,比直接拼接字符串安全得多,建议一直用这种参数化的写法。

内容的提问来源于stack exchange,提问作者Kris van der Mast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:42:39