我们正在使用 ADO.NET 数据服务并构建基于 URL 的过滤器。示例:/Customers?filter=City eq 'London'
我们现在需要过滤全文“标签”字段。WAS HOPING FOR: /Customers?filter=标记为“友好”
问题:ADO.NET 没有 LIKE 运算符。ADO.NET 似乎不喜欢 FTS(它没有找到匹配项 - 因为它没有通过 CSV 解析)
任何想法如何使这项工作?谢谢
我们正在使用 ADO.NET 数据服务并构建基于 URL 的过滤器。示例:/Customers?filter=City eq 'London'
我们现在需要过滤全文“标签”字段。WAS HOPING FOR: /Customers?filter=标记为“友好”
问题:ADO.NET 没有 LIKE 运算符。ADO.NET 似乎不喜欢 FTS(它没有找到匹配项 - 因为它没有通过 CSV 解析)
任何想法如何使这项工作?谢谢
ADO.NET 数据服务确实支持“LIKE”类型的运算符。
像这样的查询:
http://localhost/EntitiesService.svc/CalEvents?$filter=indexof(Subject,'fO') ge 0
http://localhost/EntitiesService.svc/CalEvents?$filter=substringof('fox',Subject) eq true
或 LINQ 版本:
var result = _context.CalEvents.Where(ce => ce.Subject.Contains(searchTerm))
做你想要的。他们使用“LIKE”运算符生成 SQL 查询,并将“%”添加到搜索词中。因此,它们的行为类似于“LIKE”运算符。
例如,带有“包含”运算符的 FTS .. 不受支持,我没有时间确定,但我想我不久前就看到了。
更多信息: http ://www.odata.org/developers/protocols/uri-conventions
我本身没有使用过 ADO.NET 数据服务,但是,在使用全文搜索时,我发现 CONTAINS 运算符的功能要强大得多。无论是在 ad hoc sql 字符串中,还是在存储过程中。