使用Dapper-dot-net …1 ]8 ~2 L# F- N+ p$ q( k
以下数据对象无结果:$ W1 B0 p+ S, m
var data = conn.Query(@" select top Term as Label, Type, ID from SearchTerms WHERE Term like '%@T%'", new { T = (string)term });但是,当我只使用传统的字符串格式时,例如: 9 m0 q$ i4 z. \4 {- P! M. _string QueryString = String.Format("select top 25 Term as Label,Type,ID from SearchTerms WHERE Term like ",term);var data = conn.Query(QueryString);我在集合中得到25行。Dapper参数的结尾是否无法正确分析@T?9 _6 W K' q5 E
4 }: k$ ?$ B, r0 {# B/ ]9 |( z, T7 Q解决方案: # i% A& A3 n8 n* s- h5 ^5 i+ @5 q 尝试: $ I& n' H1 x9 Iterm = "whateverterm";var encodeForLike = term => term.Replace("[","[[]").Replace("%","[%]");string term = "%" encodeForLike(term) "%";var data = conn.Query(@" select top 25 Term as Label, Type, ID from SearchTerms WHERE Term like @term", new { term });类似的操作符没有什么特别的,你永远不需要在字符串中包含参数,他们不能工作,而是把它们解释为字符串。/ N M4 N P4 I3 g; r- M 笔记 0 S8 O$ |7 v$ d8 F5 t, c0 x强烈建议您不要在第二段中使用硬编码示例,除此之外sql除了巨大的注射问题,它还可能导致dapper泄漏。 ^8 f, i/ z( K3 z h3 ~* R警告 3 t. T, D* x5 Y Y任何like通配符开头的匹配不能保存,这意味着它很慢,需要进行索引扫描。