CellSet转换成DataTable

在ADOMD.NET下返回的CellSet结果通常来说是无法直接用到容器控件当中的,因为其并没有实现相应的接口,所以通常需要转换成DataTable然后再做处理。

以下代码收集自网络

 1    public DataTable ToDataTable(CellSet cs)
 2    {
 3        DataTable dt = new DataTable();
 4        dt.TableName = "resulttable";
 5        DataColumn dc = new DataColumn();
 6        DataRow dr = null;
 7
 8        //第一列:必有为维度描述(行头)
 9        dt.Columns.Add(new DataColumn("Description"));
10
11        //生成数据列对象
12        string name;
13
14        foreach (Position p in cs.Axes[0].Positions)
15        {
16            dc = new DataColumn();
17            name = "";
18            foreach (Member m in p.Members)
19            {
20                name = name + m.Caption + " ";
21            }

22
23            dc.ColumnName = name;
24            dt.Columns.Add(dc);
25        }

26
27        //添加行数据
28        int pos = 0;
29
30        foreach (Position py in cs.Axes[1].Positions)
31        {
32            dr = dt.NewRow();
33
34            //维度描述列数据(行头)
35            name = "";
36
37            foreach (Member m in py.Members)
38            {
39                name = name + m.Caption + "\r\n";
40            }

41            dr[0= name;
42
43            //数据列
44            for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)
45            {
46                dr[x] = cs[pos++].FormattedValue;
47            }

48            dt.Rows.Add(dr);
49        }

50        return dt;
51    }
 
posted @   哥本哈士奇(aspnetx)  阅读(953)  评论(4编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2006-05-22 长春.net俱乐部的成员都来介绍一下自己
点击右上角即可分享
微信分享提示