Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Postgres拒绝了Dapper列表参数_C#_Postgresql_Dapper_Postgresql 11 - Fatal编程技术网

C# Postgres拒绝了Dapper列表参数

C# Postgres拒绝了Dapper列表参数,c#,postgresql,dapper,postgresql-11,C#,Postgresql,Dapper,Postgresql 11,我有一个列表(也尝试了普通数组),我想在查询中使用它。Dapper生成SQL并正确地将参数替换为带编号的参数。但是,PG抱怨list参数的语法。没有提供进一步的细节。复制生成的SQL并用实际值替换数字(将参数添加到列表参数),查询工作 以下是生成的SQL中有问题的子句: WHERE ( names.tenant = $1 AND scan_results.tenant = $1 AND scan_results.scan IN $2 ) Dapper的原始语句字符串如下

我有一个
列表
(也尝试了普通数组),我想在查询中使用它。Dapper生成SQL并正确地将参数替换为带编号的参数。但是,PG抱怨list参数的语法。没有提供进一步的细节。复制生成的SQL并用实际值替换数字(将参数添加到列表参数),查询工作

以下是生成的SQL中有问题的子句:

WHERE (
    names.tenant = $1
    AND scan_results.tenant = $1
    AND scan_results.scan IN $2
)
Dapper的原始语句字符串如下:

WHERE (
    file_names.tenant = @tenantId
    AND scan_results.tenant = @tenantId
    AND scan_results.scan IN @validScans
)
使用
con.query
执行查询,如下所示:

con.Query(stmt, new
{
    tenantId = tenant.Id,
    validScans = tenant.LatestScans // .ToArray()
});
确切的Postgres错误是:

ERROR:  syntax error at or near "$2" at character ...

原来我对PGSQL和Dapper都有一些误解。首先,参数周围需要paren,其次,我需要使用
ANY
,而不是
中的


因此,正确的SQL如下所示:
和scan\u results.scan=ANY(@validScans)

谢谢!我可以确认这也适用于整数,正如您可能期望的那样。