private void Init()
        {
            qryform = new QueryForm(qryTmpl.CloneNode(true).OuterXml);
            PropertyInfo[]   dataprop   = qryData.GetType().GetProperties();
            IList <DataItem> conditions = qryform.GetItems();

            foreach (DataItem di in conditions)
            {
                string name = di.GetAttr("name");
                if (name.IsNullOrEmpty())
                {
                    DataForm         df  = di.GetChildDataForm();
                    IList <DataItem> dis = df.GetItems();
                    foreach (DataItem di2 in dis)
                    {
                        name = di2.GetAttr("name");
                        var prop = dataprop.FirstOrDefault(p1 => p1.Name == name);
                        if (prop == null)
                        {
                            df.Remove(di2);
                            continue;
                        }
                        di2.SetAttr("value", prop.FastGetValue(qryData).ToString());
                        di2.SetAttr("dataType", prop.PropertyType.FullName);
                    }
                }
                else
                {
                    var prop = dataprop.FirstOrDefault(p1 => p1.Name == name);
                    if (prop == null)
                    {
                        qryform.Remove(di);
                        continue;
                    }
                    di.SetAttr("value", prop.FastGetValue(qryData).ToString());
                    di.SetAttr("dataType", prop.PropertyType.FullName);
                }
            }
        }
 public QueryBuilder(QueryForm qryTmpl, object qryData)
 {
     this.qryData = qryData;
     this.qryTmpl = qryTmpl;
     Init();
 }