如何将不明确表数也不明确各表的列的DataSet转换为类

houyizhinv 2013-12-11 02:53:22
例如:
这次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
琢磨半天都琢磨不出,望高手指点指点,给个相应的链接什么的。
如果分少 可以加分。
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SJ_Strive 2013-12-11
  • 打赏
  • 举报
回复
只看不说话
houyizhinv 2013-12-11
  • 打赏
  • 举报
回复
引用 9 楼 mariday 的回复:
我覺得不用動態生成類,接口返回的dataset中至少你應該知道那個table是自己用的,這個table裏面的那個字段是你需要用的,如果這些都不知道,那麼你轉成List也沒用。
转成List以后 真心是可以用的 转成List以后,就可以通过动态编译,根据指标公式,组成与List匹配的Linq语句,就能计算结果了
mariday 2013-12-11
  • 打赏
  • 举报
回复
我覺得不用動態生成類,接口返回的dataset中至少你應該知道那個table是自己用的,這個table裏面的那個字段是你需要用的,如果這些都不知道,那麼你轉成List也沒用。
houyizhinv 2013-12-11
  • 打赏
  • 举报
回复
引用 6 楼 rui_china 的回复:
[quote=引用 楼主 houyizhinv 的回复:] 例如: 这次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 琢磨半天都琢磨不出,望高手指点指点,给个相应的链接什么的。 如果分少 可以加分。
用字典对去处理[/quote] 这个是我正在处理的方法。 用字典将生成的一个个List与表名存起来。
houyizhinv 2013-12-11
  • 打赏
  • 举报
回复
引用 5 楼 Susiria 的回复:
其实目的就是把DataSet中的DataTable转换成一个个List, 因为DataTable占用的内存比List会小很多 ----------------------------------------------------- 说反了,list占内存小。 动态生成datatable对应的实体类型有难度。。。 要说为了不占内存,倒不如用List<object[]>: foreach(DataRow row in ds.Table[0].Rows){ list.Add(row.ItemArray); }
嗯 是我笔误了 确实是用List内存小
灬浪子灬 2013-12-11
  • 打赏
  • 举报
回复
引用 楼主 houyizhinv 的回复:
例如: 这次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 琢磨半天都琢磨不出,望高手指点指点,给个相应的链接什么的。 如果分少 可以加分。
用字典对去处理
Susiria 2013-12-11
  • 打赏
  • 举报
回复
其实目的就是把DataSet中的DataTable转换成一个个List, 因为DataTable占用的内存比List会小很多 ----------------------------------------------------- 说反了,list占内存小。 动态生成datatable对应的实体类型有难度。。。 要说为了不占内存,倒不如用List<object[]>: foreach(DataRow row in ds.Table[0].Rows){ list.Add(row.ItemArray); }
houyizhinv 2013-12-11
  • 打赏
  • 举报
回复
引用 3 楼 shiyong7682719 的回复:
呵呵了! 接口给过来的DataSet中有多少表,不确定,每个表有多少列 这接口是有多神奇啊!!!
这是很正常的事情 LTE的性能接口
  • 打赏
  • 举报
回复
呵呵了! 接口给过来的DataSet中有多少表,不确定,每个表有多少列 这接口是有多神奇啊!!!
houyizhinv 2013-12-11
  • 打赏
  • 举报
回复
引用 1 楼 Lost_Painting 的回复:
"ds_test类" 这个是编译前的代码段,编译之后就是"静态"的了. 去了解一下.net的MetaData就知道. "接口给过来的DataSet中有多少表,不确定,每个表有多少列,不确定。但是要能通吃这个DataSet" DataSet是运行时产生的数据,如果内容格式都不定,肯定不存在一个静态的已经写入到MetaData的类来匹配这个动态数据. 如果楼主真的想要这个效果,就需要动态生成ds_test类,在DataSet尝试数据时,动态编译,反射调用. 这种方法,编码难度、调试与除错都比静态编译的代码难度高。 我不知道为什么楼主会有这种需求。 是否是理解需求--> 设计出现了问题?
其实目的就是把DataSet中的DataTable转换成一个个List, 因为DataTable占用的内存比List会小很多 然后最终的结果最好能放在一个类里面,如果不能也行
鸭梨山大帝 2013-12-11
  • 打赏
  • 举报
回复
"ds_test类" 这个是编译前的代码段,编译之后就是"静态"的了. 去了解一下.net的MetaData就知道. "接口给过来的DataSet中有多少表,不确定,每个表有多少列,不确定。但是要能通吃这个DataSet" DataSet是运行时产生的数据,如果内容格式都不定,肯定不存在一个静态的已经写入到MetaData的类来匹配这个动态数据. 如果楼主真的想要这个效果,就需要动态生成ds_test类,在DataSet尝试数据时,动态编译,反射调用. 这种方法,编码难度、调试与除错都比静态编译的代码难度高。 我不知道为什么楼主会有这种需求。 是否是理解需求--> 设计出现了问题?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧