Linq搜索任何单词

时间:2014-10-09 13:25:38

标签: c# asp.net-mvc linq

我需要在IQueryable列表中搜索搜索词中的单词。

目前我有这个工作,但它是完全匹配。

list.Where(x => x.MyList.Any(y => y.ToSearch.ToLower().Contains(searchTerm.ToLower())));

我需要的是有人搜索"搜索词"结果应该是:

"搜索条款" "另一个搜索词"

我不确定在linq中解决此问题的最佳方法是否有人可以帮忙?

1 个答案:

答案 0 :(得分:6)

//split the search terms by space
var searchWords = searchTerm.ToLower().Split( " ".ToCharArray(), 
                          StringSplitOptions.RemoveEmptyEntries);

//check if any of those search terms is present
list.Where(x => x.MyList.Any(y => 
        searchWords.All(sw=>y.ToSearch.ToLower().Contains(sw))));