Requête IN

  • Dapper prend nativement en charge les requêtes IN(), pas besoin de construire manuellement une chaîne de caractères avec des virgules.
  • Règle : passez un tableau ou une collection List en paramètre, Dapper le développera automatiquement pour générer la condition IN.
  • Syntaxe SQL fixe : WHERE Id IN @ids, n’ajoutez pas de parenthèses supplémentaires. Mauvaise écriture : IN (@ids).
  • Atout : requêtes entièrement paramétrées, élimine les risques d’injection SQL.

Exemple

using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;

static void Main(string[] args)
{
    var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
    using (IDbConnection db = new MySqlConnection(connStr))
    {
        string sql = "SELECT * FROM student WHERE Id IN @ids";

        // Prend en charge int[] / List<int>
        int[] idArray = {3,4};
        List<Student> studentList = db.Query<Student>(
            sql,
            new { ids = idArray }
        ).ToList();
    }
}Langage du code : JavaScript (javascript)
Les deux syntaxes de paramètres fonctionnent
// Méthode 1 : tableau (exemple original)
new { ids = new int[] {3,4} }

// Méthode 2 : collection List (plus utilisée en projet)
new { ids = new List<int> {3,4,5} }Langage du code : PHP (php)

Suppression en masse Delete

string sqlDelete = "DELETE FROM student WHERE Id IN @ids";
int rows = db.Execute(sqlDelete, new { ids = new int[]{2,5} });Langage du code : JavaScript (javascript)

Requête IN à plusieurs conditions

string sql = "SELECT * FROM student WHERE Id IN @ids AND Email IN @emails";
var param = new
{
    ids = new int[]{1,2},
    emails = new string[]{"a@gmail.com","b@gmail.com"}
};
var list = db.Query<Student>(sql, param).ToList();Langage du code : PHP (php)

Requête IN

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *