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

发布于 2024-11-01 17:39:00 字数 143 浏览 1 评论 0原文

我有一个文本框,用户可以在其中键入要搜索的关键字,方法是包含 andor 关键字,以使关键字像 SQL 过滤器一样工作。如何使用 Linq 执行此类搜索?如果可能,还请考虑括号 (())。

I have a textbox in which the user can type keywords to search for by including and and or keywords to make the keywords work like a SQL Filter. How can I perform this type of search using Linq? If possible, please also take parentheses (()) into consideration.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断桥再见 2024-11-08 17:39:00

如果它是自由文本输入,例如

LastName = "Smith" 和 FirstName = "John"

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

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

它支持 andor 运算符,如上所示,以及括号和其他运算符和方法的主机。

If it's going to be free text entry, e.g.

LastName = "Smith" and FirstName = "John"

then you may find it helpful to use Scott Guthrie's Dynamic Linq library, which provides a Where() method that accepts a string that it parses into a lambda. Then you could do something like this:

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

It supports the and and or operators, as shown above, as well as parentheses and host of other operators and methods.

独﹏钓一江月 2024-11-08 17:39:00
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文