Does Dapper support the like operator?

后端 未结 4 2051
遇见更好的自我
遇见更好的自我 2021-01-30 12:19

Using Dapper-dot-net...

The following yields no results in the data object:

var data = conn.Query(@\"
    select top 25 
    Term as Label, 
    Type, 
          


        
4条回答
  •  逝去的感伤
    2021-01-30 13:13

    Try:

    term = "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 });
    

    There is nothing special about like operators, you never want your params inside string literals, they will not work, instead they will be interpreted as a string.

    note

    The hard-coded example in your second snippet is strongly discouraged, besides being a huge problem with sql injection, it can cause dapper to leak.

    caveat

    Any like match that is leading with a wildcard is not SARGable, which means it is slow and will require an index scan.

提交回复
热议问题