使用dapper和postgresql抛出42601的“WHERE x IN y”子句:语法错误在“$ 1”处或附近

我有一个字符串数组,我想要一个包含IN子句的查询,如:

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

这是我的查询的最后一位,其中包含“where in X in”子句:

 ... 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... 

我像这样做一个Dapper电话

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

其中tagsArr是一个字符串[]。

我得到例外:

{“42601:语法错误在或附近\”$ 1 \“”}

在PostgreSQL中,您不能使用IN来检查值是否在数组中,您必须使用以下PostgreSQL特定的语法: where t.name = ANY (@tagsParam) 。 请参阅PostgreSQL文档中的 8.15.5部分。