问题描述
我想在查询我的 Postgresql 数据库时传递多个实体代码。我收到以下代码错误: 我希望查询的工作方式如下:
SELECT * FROM public.test WHERE entity_code IN('value1','value2');
下面是我的代码,它可以在我传递单个值的情况下工作:
string query = "SELECT * FROM public.test WHERE entity_code = @Entity_Code";
Dictionary<string,object> dictionary = new Dictionary<string,object>();
dictionary.Add("@Entity_Code","value1");
var connection = _postgresqlContext.Database.GetDbConnection();
var results = connection.Query<Test>(query,new DynamicParameters(dictionary));
string query = "SELECT * FROM public.test WHERE entity_code IN @Entity_Code";
Dictionary<string,object>();
dictionary.Add("@Entity_Code",new string[]{ "value1","value2" });
var connection = _postgresqlContext.Database.GetDbConnection();
var results = connection.Query<Test>(query,new DynamicParameters(dictionary));
解决方法
Postgres 的 IN
语法略有不同。您应该使用 ANY
:
string query = "SELECT * FROM public.test WHERE entity_code = ANY(@Entity_Code)";
var dictionary = new Dictionary<string,object>();
dictionary.Add("@Entity_Code",new string[]{ "value1","value2" });
var connection = _postgreSqlContext.Database.GetDbConnection();
var results = connection.Query<Test>(query,new DynamicParameters(dictionary));
查看此问题的答案:IN vs ANY operator in PostgreSQL