2017-08-24 48 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

相關問題