Linq to SQL:使用包含字符串数组的部分匹配字符串

时间:2014-02-10 22:47:14

标签: c# .net linq linq-to-sql iequalitycomparer

这是我的代码:

string[] customerNames = searchModel.CustomerName.Split(',');
 query = query.Where(d => customerNames.Contains(d.CustomerName, comparer) || customerNames.Contains(d.Company1.CompanyName, comparer));

如果您只是在寻找完全匹配,哪个有效。但是我想要部分匹配,即:如果customerNames包含元素'ell',如果d.CustomerName'Hello',它将选择d,因为'ell'在'Hello'

我尝试重写EqualityComparer,但我相信它正在尝试使用GetHashCode函数而不是Comparer中的Equals,我不知道如何实现。

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

string[] customerNames = searchModel.CustomerName.Split(',');
query = query.Where(d => customerNames.Any(c => c.Contains(d.CustomerName)) || customerNames.Any(c => c.Contains(d.Company1.CompanyName)));

但你应该知道,当customerNames有很多项目时,它可能会变得很慢。