我要做一个用户自定义查询类,对应sql语句的where语句;
我的类大致是这样定义的:
public class Condition
{
    public Condition()
    {}
    //逻辑运算符(and\or)
    public string Opereator
    {set;get}
    //查询字段
    public string Field
    {set;get}
    //查询条件运算符(=、<、>、like)
    public string ConditionString
    {set;get}
    //查询值
    public string Value
    {set;get}
}
要是多个就返回一个Condition[]集合
但总觉得不合理,要是用户需要将两个条件用括号括起来该怎么办啊?
那位高手有这方面的资料或例子请回复,谢谢!

解决方案 »

  1.   

    应该把条件做成树形结构:例如 a=8 and (b='a' or c=23) and d=8 变成树形结构为: root
     |
     |---|--a
     |   |--=
     |   |--8
     |  and
     |   |---|--b
     |   |   |--=
     |   |   |--'a'
     |   |--or
     |       |--c
     |       |--=
     |       |--23
    and
     |--d
     |--=
     |--1
      

  2.   

    这么做比较麻烦,很多地方都要考虑。可以参照一下nhiberate的HQL。我觉得SqlMap挺好的
      

  3.   

    关注,我也正想搞这么个东东呢,不过我觉得应该分为两层,第一层为楼主的Condition类(不包括逻辑运算符(and\or)),第二层为用逻辑运算符(and\or)连接Condition类,但这个东东具体该怎么组织我还没想好