83 votes

Dapper prend-il en charge l'opérateur similaire ?

Utilisation de Dapper-dot-net...

Ce qui suit ne donne aucun résultat dans l'objet de données :

 var data = conn.Query(@"
    select top 25 
    Term as Label, 
    Type, 
    ID 
    from SearchTerms 
    WHERE Term like '%@T%'", 
    new { T = (string)term });

Cependant, lorsque j'utilise simplement un format de chaîne standard comme :

 string QueryString = String.Format("select top 25 Term as Label, Type, ID from SearchTerms WHERE Term like '%{0}%'", term);
var data = conn.Query(QueryString);

Je récupère 25 lignes dans la collection. Dapper n'analyse-t-il pas correctement la fin du paramètre @T ?

54voto

Atir Naveed Points 409

La meilleure façon de l'utiliser pour ajouter la fonction concat dans la requête car elle enregistre également dans l'injection SQL, mais la fonction concat n'est prise en charge qu'au-dessus de sql 2012

 string query = "SELECT * from country WHERE Name LIKE CONCAT('%',@name,'%');"
var results = connection.query<country>(query, new {name});

51voto

eliaquin Points 469

Oui. Cette solution simple a fonctionné pour moi à chaque fois:

 db.Query<Remitente>("SELECT * 
                     FROM Remitentes 
                     WHERE Nombre LIKE @n", new { n = "%" + nombre + "%" })
                   .ToList();

7voto

Dscoduc Points 4066

La réponse de Sam ne fonctionnait pas pour moi, donc après quelques tests, j'ai utilisé l' équivalent SQLite CONCAT qui semble fonctionner :

 string sql = "SELECT * FROM myTable WHERE Name LIKE '%' || @NAME || '%'";
var data = IEnumerable data = conn.Query(sql, new { NAME = Name });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X