public virtual MDXCube ToSubCube(string cubeName) { //获取所有的需要转未子查询的属性 var properties = this.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); var subCubePros = properties.Where(p => p.GetCustomAttributes(typeof(CriteriaPropertyAttribute), false).FirstOrDefault(t => ((CriteriaPropertyAttribute)t).Type == CriteriaBuildType.SubCube) != null); //构造子查询Cube MDXCube cube = new MDXCube(cubeName); foreach (var s in subCubePros) { var attr = (CriteriaPropertyAttribute)s.GetCustomAttributes(typeof(CriteriaPropertyAttribute), false).FirstOrDefault(); dynamic value = s.GetValue(this); switch (attr.Opration) { case CriteriaOprations.Eq: if (value != null) { var axis = this.ToAxis(attr, value); cube = new MDXCube(cube, axis); } break; default: if (value != null && value.Length > 0) { var axis = this.ToAxis(attr, value); cube = new MDXCube(cube, axis); } break; } } return(cube); }
public MDXBuilder Cube(string cube) { this.MDXCube = new MDXCube(cube); return(this); }
public MDXBuilder Cube(MDXCube cube) { this.MDXCube = cube; return(this); }