Cláusula "WHERE x IN y" con dapper y postgresql throwing 42601: error de sintaxis en o cerca de \ "$ 1 \"

asp.net-mvc c# dapper npgsql postgresql

Pregunta

Tengo una serie de cadenas y me gustaría tener una consulta que contenga una cláusula IN, como:

"... WHERE t.name IN ('foo', 'bar', 'baz')..>"

Aquí está el último bit de mi consulta, que contiene una cláusula "donde X en Y":

...
left join genre_tag_band_join tj on hb.id = tj.band_id or ob.id = tj.band_id
left join genre_tags t on tj.genre_tag_id = t.id
inner join venues v on e.venue_id = v.id

where t.name IN @tagsParam...

Hago una llamada Dapper como esta

var shows = con.Query<Event, Band, Band, GenreTag, Venue, Event>(query, (e, hb, ob, gt, v) =>
{
    Event show;
    ...
    return e;
},
new { tagsParam = tagsArr}).AsQueryable();

donde tagsArr es una cadena [].

Me sale una excepción:

{"42601: error de sintaxis en o cerca de \" $ 1 \ ""}

Respuesta aceptada

En PostgreSQL, no puede usar IN para verificar si un valor está dentro de una matriz, debe usar la siguiente sintaxis específica de PostgreSQL: where t.name = ANY (@tagsParam) . Consulte la sección 8.15.5 en los documentos de PostgreSQL .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué