【发布时间】:2021-11-05 20:43:29
【问题描述】:
我的方法的 WHERE 子句中的参数字符串有问题。我正在尝试进行这样的查询:
string query = "SELECT * FROM table WHERE Name @Filter OR Email @Filter";
然后在我的开关里面,他们的情况会是这样的:
public async Task<List<DTO>>Get(FilterDTO filter)
{
foreach(var f in filter.fields)
{
switch(f.Operator)
{
case 1:
if(f.Value == null)
{
f.Value = "IS NULL";
queryResult = connection.Query<Model>(query, new {Filter = f.Filter});
break;
}
else
goto case 2;
我的参数字符串有很多问题,因为我看不到调试失败的原因
请注意,我的真实值名称是 FilterValue(此代码是简化的)
我收到此错误:
@Filter 附近的语法不正确
所以我知道我的参数字符串输入有问题,但我看不到它是什么
【问题讨论】:
-
f.Value是什么,为什么你不使用 in 表达式?我想你错过了什么 -
我做了一点修改,也许现在更容易理解了。例如,如果我的邮递员输入是 f.Value = null,那么我在 if 条件下输入,f.Value 采用字符串“IS NULL”并进入我的查询但随后失败。
-
你不能“参数化”操作符 - only 值.....所以你不能传入一个包含操作符的表达式参数值