Пример #1
0
        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);
        }
Пример #2
0
 public MDXBuilder Cube(string cube)
 {
     this.MDXCube = new MDXCube(cube);
     return(this);
 }
Пример #3
0
 public MDXBuilder Cube(MDXCube cube)
 {
     this.MDXCube = cube;
     return(this);
 }