CellSet 结构:
查询MDX:
SELECT NON EMPTY {{ {{ {{ {{ {{ AddCalculatedMembers([店铺.店铺ID].[店铺ID].Members)}} }} }} }} }} DIMENSION PROPERTIES MEMBER_TYPE , [店铺.店铺ID].[店铺ID].[国家], [店铺.店铺ID].[店铺ID].[区域], [店铺.店铺ID].[店铺ID].[省份], [店铺.店铺ID].[店铺ID].[店铺名称]ON ROWS ,{{ [Measures].[终端销售数量],[measures].[终端销售生意额],[measures].[终端销售吊牌额]}}ON COLUMNS FROM [RegentCube] where [日期].[年周].[年].&[2015].[第01周]
C#遍历:
int pos = 0;foreach (Position py in cellSet.Axes[1].Positions){dr = dt.NewRow();//维度描述列数据int cols = 0;for (int i = 0; i < py.Members.Count; i++){if (i == 0){for (int w = 1; w < py.Members[0].MemberProperties.Count; w++){dr[cols] = py.Members[0].MemberProperties[w].Value;cols++;}}else{dr[cols] = py.Members[i].Caption;cols++;}}//数据列for (int x = 1; x <= cellSet.Axes[0].Positions.Count; x++){dr[x + cols - 1] = cellSet[pos++].Value;}dt.Rows.Add(dr);}var model = dt.AsEnumerable().Select(r => new{销售数 = string.IsNullOrWhiteSpace(r["终端销售数量"].ToString()) ? 0 : Convert.ToInt32(r["终端销售数量"]),生意额 = string.IsNullOrWhiteSpace(r["终端销售生意额"].ToString()) ? 0 : Convert.ToDouble(r["终端销售生意额"]),吊牌额 = string.IsNullOrWhiteSpace(r["终端销售吊牌额"].ToString()) ? 0 : Convert.ToDouble(r["终端销售吊牌额"]),国家 = r["Dimension0"],省份 = r["Dimension1"],城市 = r["Dimension2"],店铺名称 = r["Dimension3"]});