【发布时间】:2016-03-08 08:01:57
【问题描述】:
(如果标题不能代表这个问题,请说出来,我想不出一个好的简短描述)
我正在尝试为我的网络应用程序实现高级搜索功能。此搜索必须能够搜索许多可能的组合。
如图所示,每个组(AND 或 OR)都可以有另一个组或条件,可以相等或不相等。图片应生成如下所示的 where 子句:
WHERE (Application like '%User%' AND Host not like '%fjzhykjety%') OR (REMOTE_HOST like '%uykirlyy%' AND REMOTE_PORT not like '%55555%')
Application、Host 和 REMOTE_HOST 是字符串,REMOTE_PORT 是可为空的 int。我还有一个必须可搜索的 GUID。
目前,这个前端搜索是用 Angular 编写的,并为我提供了以下 json(json 取决于嵌套组和条件)的示例:
{
"group": {
"operator": "OR",
"rules": [
{
"group": {
"operator": "AND",
"rules": [
{
"condition": "=",
"field": {
"name": "Application",
"type": "select"
},
"data": "User"
},
{
"condition": "<>",
"field": {
"name": "Host",
"type": "text"
},
"data": "fjzhykjety"
}
]
}
},
{
"group": {
"operator": "AND",
"rules": [
{
"condition": "=",
"field": {
"name": "REMOTE_HOST",
"type": "text"
},
"data": "uykirlyy"
},
{
"condition": "<>",
"field": {
"name": "REMOTE_PORT",
"type": "number"
},
"data": 55555
}
]
}
}
]
}
}
我需要一种方法将这些数据发送到我的 .NET 应用程序(使用 REST API)并在数据库中查询它。我研究了动态 linq 以进行查询,但由于 json 文件的格式并不总是相同,因此很难在 C# 中为它创建一个类并为此搜索构建一个动态 linq 查询。
实现此高级搜索的最佳方式是什么?
【问题讨论】:
-
您是否终止了此功能?我目前正在使用一个非常相似的功能,主要区别在于我必须包含连接,并且这些字段是“未知”的,基于上一个连接的字段选择动态提供。最后,我的应用程序用户想要一个像 SQL 管理这样的“视图建模器”。我正在使用 SqlKata,我认为您的工作更加简单和灵活。
标签: json asp.net-mvc linq dynamic-linq