【发布时间】:2014-09-19 23:41:18
【问题描述】:
我是一个 oData 新手,正在尝试构建 $filter 参数,该参数的行为类似于“LIKE”sql 语句。
假设用户在名称文本框中输入“ABC”,这相当于“$filter=name eq 'ABC'”。
- 用户输入“ABC*”,代码应生成“name startswith 'abc'”。
- 用户输入“*ABC”,代码应产生“名称以'abc'结尾”。
- 用户输入“A*C”,代码应生成“名称以 'a' 开头和名称 以“c”结尾。
- 如果它还可以执行“A*B*C”或更复杂的变化,那就太好了,但不是必需的。
现在,我可以编写一个类似这样的 javascript 方法......(仅限伪) (如果第一个字符是 == "")? “blah以'ABC'开头”:“” + (如果最后一个字符是 == "") ? "blah endwith 'ABC'" : "" ...etc..or 可能是一些正则表达式
但它并不优雅我不确定这是正确的方法,有没有其他方法可以使用 oData 处理 LIKE。是否可以通过 "blah eq '*A*B*C*'" 并修改 Controller 中的选项以强制选项生成 "LIKE" ?
注意:不要求提供实际代码,只是想知道哪种方法可行...
问候, 迈克
【问题讨论】:
-
如果用户输入
*A*B*C*会怎样? -
是的,我想过,但我们必须考虑 oData 选项和 LINQ 的限制。我会认为“ABC”是现实世界商业应用程序中的一个边缘案例,我也许可以不支持它。
-
谁能解释为什么这被否决为 -1 ?
-
我想是因为这个网站不是关于“做你的工作”,而是回答你的问题
-
好点,我会修改我的问题
标签: asp.net-web-api filter odata