我需要在IQueryable列表中搜索搜索词中的单词。
目前我有这个工作,但它是完全匹配。
list.Where(x => x.MyList.Any(y => y.ToSearch.ToLower().Contains(searchTerm.ToLower())));
我需要的是有人搜索"搜索词"结果应该是:
"搜索条款" "另一个搜索词"
我不确定在linq中解决此问题的最佳方法是否有人可以帮忙?
答案 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))));