如何正确使用List作为Npgsql和Dapper的参数

时间:2017-08-24 19:09:38

标签: c# dapper npgsql

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

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 个答案:

答案 0 :(得分:2)

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