首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么将不明确表数也不明确各表的列的DataSet转换为类

2013-12-13 
如何将不明确表数也不明确各表的列的DataSet转换为类例如:这次DataSet ds_test下有两个DataTabledt_001,dt

如何将不明确表数也不明确各表的列的DataSet转换为类
例如:
这次DataSet ds_test下有两个DataTable
dt_001,dt_002
dt_001的列为:
dc_001,dc_002,dc_003
dt_002的列为:
dc_001,dc_002,dc_003,dc_004

如何将这个DataSet转换为以下内容



    public class dt_001
    {
        public string dc_001{ get; set; }
        public string dc_002{ get; set; }
        public string dc_003{ get; set; }
    }
    public class dt_002
    {
        public string dc_001{ get; set; }
        public string dc_002{ get; set; }
        public string dc_003{ get; set; }
        public string dc_004{ get; set; }
    }
    
    public class ds_test
    {
        public List<dt_001>{ get; set; }
        public List<dt_002>{ get; set; }
    }

最后的结果中,就把这个DataSet的数据存到这一个ds_test类里面了
问题:接口给过来的DataSet中有多少表,不确定,每个表有多少列,不确定。但是要能通吃这个DataSet
琢磨半天都琢磨不出,望高手指点指点,给个相应的链接什么的。
如果分少 可以加分。
[解决办法]
"ds_test类"
这个是编译前的代码段,编译之后就是"静态"的了.
去了解一下.net的MetaData就知道.

"接口给过来的DataSet中有多少表,不确定,每个表有多少列,不确定。但是要能通吃这个DataSet"
DataSet是运行时产生的数据,如果内容格式都不定,肯定不存在一个静态的已经写入到MetaData的类来匹配这个动态数据.

如果楼主真的想要这个效果,就需要动态生成ds_test类,在DataSet尝试数据时,动态编译,反射调用.

这种方法,编码难度、调试与除错都比静态编译的代码难度高。

我不知道为什么楼主会有这种需求。

是否是理解需求--> 设计出现了问题?



[解决办法]
其实目的就是把DataSet中的DataTable转换成一个个List,
因为DataTable占用的内存比List会小很多
-----------------------------------------------------

说反了,list占内存小。

动态生成datatable对应的实体类型有难度。。。

要说为了不占内存,倒不如用List<object[]>:
foreach(DataRow row in ds.Table[0].Rows){
   list.Add(row.ItemArray);
}
[解决办法]
引用:
例如:
这次DataSet ds_test下有两个DataTable
dt_001,dt_002
dt_001的列为:
dc_001,dc_002,dc_003
dt_002的列为:
dc_001,dc_002,dc_003,dc_004

如何将这个DataSet转换为以下内容


    public class dt_001
    {
        public string dc_001{ get; set; }
        public string dc_002{ get; set; }
        public string dc_003{ get; set; }
    }
    public class dt_002
    {
        public string dc_001{ get; set; }
        public string dc_002{ get; set; }
        public string dc_003{ get; set; }
        public string dc_004{ get; set; }
    }
    
    public class ds_test
    {
        public List<dt_001>{ get; set; }
        public List<dt_002>{ get; set; }
    }

最后的结果中,就把这个DataSet的数据存到这一个ds_test类里面了
问题:接口给过来的DataSet中有多少表,不确定,每个表有多少列,不确定。但是要能通吃这个DataSet
琢磨半天都琢磨不出,望高手指点指点,给个相应的链接什么的。
如果分少 可以加分。

用字典对去处理
[解决办法]
我覺得不用動態生成類,接口返回的dataset中至少你應該知道那個table是自己用的,這個table裏面的那個字段是你需要用的,如果這些都不知道,那麼你轉成List也沒用。

热点排行