我需要在LINQ中输入两个SqlMethods.Like语句,我不知道如何完成它(或者如果它是正确的方法)。
我有供应商ID和供应商名称字段,但我只有一个通用的供应商搜索,允许用户根据他们的名字或ID搜索供应商。我还在搜索中允许使用通配符,因此我需要找到ID或名称与用户输入相似的供应商。
我想做类似下面的事情,但显然这不正确。 (编辑:它确实像书面一样工作。)
results = results.Where(p => SqlMethods.Like(p.VendorId, inputVendor.Replace("*", "%") ||
SqlMethods.Like(p.VendorName, inputVendor.Replace("*", "%"));
背景:我根据用户输入的搜索参数添加where语句,因此结果= results.Where part。
任何帮助将不胜感激!
答案 0 :(得分:2)
我不清楚为什么这“显然”不正确。据推测它不起作用,否则你不会发布,但它并不明显 它不起作用。
我建议在查询之前执行替换,如下所示:
string vendorPattern = inputVendor.Replace("*", "%");
但是我希望这可行:
results = results.Where(p => SqlMethods.Like(p.VendorId, vendorPattern) ||
SqlMethods.Like(p.VendorName, vendorPattern));
当然,您只能在SQL LIKE查询中出现通配符的位置,但这是一个单独的问题。 (如果不是在开始或结束时,我不确定这种行为。)
如果这没有帮助,请更新问题以了解尝试时会发生什么。