0

我有一个搜索查询来查找客户。

我想使用 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 等进行另一个查询。

4

2 回答 2

1

Try using Except:

customeradditional = customeradditional
    .Where(c => SqlFunctions.SoundCode(c.CustomerName.ToUpper()) == SqlFunctions.SoundCode(searchString.ToUpper()))
    .Except(customer);
于 2013-10-23T10:49:32.330 回答
1

我不确定我的理解是否正确:

从您现在所拥有的情况来看,该customeraddtional查询确实返回了一些已在查询中返回的客户customer。而且您只想要结果,这些结果尚未包含在客户查询中。

那么解决方案是:

 customeradditional = customeradditional.Where(c =>  
                         SqlFunctions.SoundCode(c.CustomerName.ToUpper()) == 
                         SqlFunctions.SoundCode(searchString.ToUpper()))
                                        .Except(customer);

这样,您就明确排除了客户对象中存在的每个项目。

于 2013-10-23T10:49:47.850 回答