Consulta IN

  • Dapper admite de forma nativa consultas IN(), no hace falta armar cadenas separadas por comas a mano.
  • Regla: Pasa un array o colección List como parámetro, Dapper lo expandirá automáticamente para generar la condición IN.
  • Sintaxis SQL fija: WHERE Id IN @ids, no agregues paréntesis extra. Forma incorrecta: IN (@ids).
  • Ventaja: Consultas totalmente parametrizadas, evita riesgos de inyección SQL.

Ejemplo

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";

        // Compatible con int[] / List<int>
        int[] idArray = {3,4};
        List<Student> studentList = db.Query<Student>(
            sql,
            new { ids = idArray }
        ).ToList();
    }
}Lenguaje del código: JavaScript (javascript)
Ambas formas de parámetros son válidas
// Forma 1: array (ejemplo original)
new { ids = new int[] {3,4} }

// Forma 2: colección List (más usada en proyectos reales)
new { ids = new List<int> {3,4,5} }Lenguaje del código: PHP (php)

Borrado masivo Delete

string sqlDelete = "DELETE FROM student WHERE Id IN @ids";
int rows = db.Execute(sqlDelete, new { ids = new int[]{2,5} });Lenguaje del código: JavaScript (javascript)

Consulta IN con múltiples condiciones

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();Lenguaje del código: PHP (php)

Consulta IN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *