我有一个搜索查询来查找客户。
我想使用Sounds Like函数返回其他可能的结果,但这会在我的主搜索查询中返回一些相同的结果。
我只想在局部视图中显示其他结果。
我基本上需要一个DoesNotContain。
到目前为止,我的主要查询是:
customer = customer.Where(c => SqlFunctions.StringConvert((double)c.CustomerID).Trim().Equals(searchString)
|| c.CustomerName.ToUpper().Contains(searchString.ToUpper()));
还有其他结果:
customeradditional = customeradditional.Where(c => SqlFunctions.SoundCode(c.CustomerName.ToUpper()) == SqlFunctions.SoundCode(searchString.ToUpper()));
我能看到的唯一可行解决方案是执行包含查询,遍历每个项目并获取ID,然后对CustomerID执行另一个查询!= 1或CustomerID!= 2或CustomerID!= 3等
答案 0 :(得分:1)
尝试使用Except
:
customeradditional = customeradditional
.Where(c => SqlFunctions.SoundCode(c.CustomerName.ToUpper()) == SqlFunctions.SoundCode(searchString.ToUpper()))
.Except(customer);
答案 1 :(得分:1)
我不确定我是否理解你的错误:
根据您现在的情况,customeraddtional
查询确实会返回customer
查询中已返回的一些客户。而且您只需要结果,而这些结果尚未包含在客户查询中。
然后解决方案是:
customeradditional = customeradditional.Where(c =>
SqlFunctions.SoundCode(c.CustomerName.ToUpper()) ==
SqlFunctions.SoundCode(searchString.ToUpper()))
.Except(customer);
这样您就明确排除了客户对象中的每个项目。