2017-08-24 51 views
0

我无法弄清楚如何在查询中使用List<Guid>作为参数。在不同的情况下,我遇到过一段时间的麻烦,但现在是这样。我试图通过删除测试用户创建的所有内容来清理测试。下面的代码:如何正确使用列表作为Npgsql和Dapper的参数

var idList = new List<Guid>() { SYS_ADMIN_GUID, OPERATOR_GUID, OPERATOR_ELECTRONICS_TECH_GUID, UNIT_MANAGER_GUID, AREA_MANAGER_GUID }; 

using (NpgsqlConnection c = new NpgsqlConnection(TestHelper.ConnectionString)) 
{ 
    c.Open(); 

    c.Execute(@"delete from ""BlueStakes"".""MarkRequestStatuses"" where ""CreatedById"" in :idList", new { idList }); 
} 

我还试图用@idList作为没有任何工作参数。这是它给了错误:

Npgsql.PostgresException: Npgsql.PostgresException: 42601: syntax error at or near "$1"

显然,查询是不承认的列表,并在坚守它的参数,但我想不出为什么。

回答

1

您不能在PostgreSQL中使用带有列表的IN。要检查列表中是否存在元素,请使用以下语法:WHERE "CreatedById" = ANY (:idList)

+0

以下是您对未来资源所说的文档:https://www.postgresql.org/docs/current/static/functions-comparisons.html – GBreen12

相关问题