私は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"
明らかに、クエリはリストを認識せず、パラメータのためにそれを固執していますが、私は理由を理解できません。
IN
をPostgreSQLのリストと一緒に使用することはできません。要素がリストに存在するかどうかを確認するには、次の構文を使用しますWHERE "CreatedById" = ANY (:idList)
。