【发布时间】:2009-12-08 10:39:14
【问题描述】:
如果我有一个List<string> 并想通过它进行标准搜索,我可以使用这样的 LINQ 语句:
(from t in tasks
where searchTerms.All(term => t.ToUpper().Contains(term.ToUpper()))
select t).ToList();
但如果我想支持标准的类似搜索引擎的语法来处理以下短语:
contract
contract customer
jim customer
"Jim Smith" customer
然后我需要开始滚动我自己的自定义搜索方法。另外作为Jon Skeet mentioned here,你必须小心比较具有不同culture设置的ToUpper(),如果你是在网络环境中,encoding会有很多问题strong> 和 search-for-encoded-characters 问题等。
是否没有处理类似搜索机器的搜索的 .NET 或 LINQ 解决方案,例如而不是 Contains() 之类的 ConstainsSearchTerms()?
【问题讨论】: