使用And And Or关键字搜索实现高级搜索



我有一个文本框,用户可以在其中输入关键字来搜索,包括andor关键字,使关键字像SQL过滤器一样工作。如何使用Linq执行这种类型的搜索?如果可能的话,也请考虑括号(())

如果是自由文本条目,例如

LastName = "Smith" and FirstName = "John"

,那么您可能会发现使用Scott Guthrie的动态Linq库很有帮助,该库提供了一个Where()方法,该方法接受字符串,并将其解析为lambda。然后你可以这样做:

string searchQuery = GetSearchQueryFromTextBox();
var searchResult = customers.Where(searchQuery);

它支持andor操作符,如上面所示,以及括号和其他操作符和方法的宿主。

from s in search 
where 
  ((s.operatorKeyword == "and" && (s.property1 == "1" && s.property2 == "2")) || 
   (s.operatorKeyword == "or"  && (s.property1 == "1" || s.property2 == "2")))
select s

相关内容

  • 没有找到相关文章

最新更新