LINQ - 或两个SqlMethods.Like子句

时间:2012-02-10 14:16:01

标签: linq linq-to-sql

我需要在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。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我不清楚为什么这“显然”不正确。据推测它不起作用,否则你不会发布,但它并不明显 它不起作用。

我建议在查询之前执行替换,如下所示:

string vendorPattern = inputVendor.Replace("*", "%");

但是我希望这可行:

results = results.Where(p => SqlMethods.Like(p.VendorId, vendorPattern) ||
                             SqlMethods.Like(p.VendorName, vendorPattern));

当然,您只能在SQL LIKE查询中出现通配符的位置,但这是一个单独的问题。 (如果不是在开始或结束时,我不确定这种行为。)

如果这没有帮助,请更新问题以了解尝试时会发生什么。