Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#高级查询语句字符串处理_C#_.net_Oop_String - Fatal编程技术网

C#高级查询语句字符串处理

C#高级查询语句字符串处理,c#,.net,oop,string,C#,.net,Oop,String,我正在寻找将字符串处理成对象树的最佳实践或库 以下是一个例子: “[年龄]=“37”和[性别]不为空,[optindate]>'2003/01/01'和[idnumber]为空,([saresident]=“52”或[公民身份]如'abc%')” 我应该能够将其对象化为一棵树,类似这样: {attribute='age', operator='=', value='37', opperand='And'} {attribute='gender', operator='Is Not Null',

我正在寻找将字符串处理成对象树的最佳实践或库

以下是一个例子:

“[年龄]=“37”和[性别]不为空,[optindate]>'2003/01/01'和[idnumber]为空,([saresident]=“52”或[公民身份]如'abc%')”

我应该能够将其对象化为一棵树,类似这样:

{attribute='age', operator='=', value='37', opperand='And'}
{attribute='gender', operator='Is Not Null', value='', opperand='And'}
{attribute='optindate', operator='>', value='2003/01/01', opperand='And'}
等等


任何建议都很好

你的房间怎么样?您可以使用“原样”,或者查看它如何构建
表达式
谓词(即树)。

查看如果需要将操作存储在树结构中,则应使用后缀或前缀表示法。 e、 g.年龄=37,性别不为空 应存储为

和=37岁!=性别无效

所以这棵树应该是这样的

        and
   =         !=
age 37  gender  null

您可以使用这些链接了解更多详细信息:

问题是字符串是由适当的筛选器控件生成的。我需要将sting转换为表达式树之类的东西?根据我上面的评论,很遗憾,我无法控制filtercontrol返回的字符串?不,我不是建议您更改字符串。我的建议是树结构应该使用前缀符号。也就是说,“和”应该是根“=”和“!=”“和”的孩子等等。所有操作数都应该是相应运算符的叶节点和子节点。因此,当需要计算表达式时,应该相应地解析树。编辑我的响应以添加两个链接供您参考我必须提到,表达式将用于查询EAV架构中的数据(请不要评论)?因此,我需要将其构建到ExpressionTree(或其他)中,然后递归并构建必要的SQL查询。