DataSet转换为泛型集合List(Of T)
2013-08-20 17:18
183 查看
在上篇博客“DataTable转换为实体(函数)”的介绍的最后提出了这样的问题:
思考问题:函数返回值为实体,这意味着什么?
意味着该函数的返回记录只能有一条,对不对?因为一个实体只能“保存”一条记录。
像查看某学生基本信息、某用户基本信息——某个人的基本信息只能有一条记录(学生实体:卡号、学号、姓名、…)吧,好,可有定义返回实体函数
思考问题: 但是,如果“根据日期查看所有收取金额记录”——不止一条记录吧,给你U层返回一个实体,能实现此功能吗?当然不能。
如何解决?
面对此问题,如何解决,你想过吗?——你说,返回DataSet或DataTable不就得了吗。你看,Out了吧….
偷偷告诉大家,还是返回实体,但是这次不是返回一个实体啦,是返回”一群“实体(实体集合)
(上篇博客链接:《DataSet转换为实体(函数)》)
本篇博客就介绍,如果由DataSet转换为泛型集合(集合中存放的是实体,即:实体集合) 涉及到“泛型”知识点,请参考:《泛型》
例子:机房收费系统——查看某段日期内收取金额记录
只写D层
1,查询某段日期内收取金额记录——CheckGetRechargeInfo(参数)——返回值:充值信息实体泛型集合
2,数据集转换为泛型集合——DataSetToList(参数)——返回值:充值信息实体的泛型集合
3,B、U层依次调用
选择‘起始日期’和‘终止日期’点击“查看”按钮,即可查看该段日期段的收取金额记录:
其实在后来的泛型集合(泛型实体类)应用中也遇到了一些问题,最后也算是解决了吧。如果谁想尝试泛型,可以和我交流一下,大家一起沟通学习一下,一起提高!!
思考问题:函数返回值为实体,这意味着什么?
意味着该函数的返回记录只能有一条,对不对?因为一个实体只能“保存”一条记录。
像查看某学生基本信息、某用户基本信息——某个人的基本信息只能有一条记录(学生实体:卡号、学号、姓名、…)吧,好,可有定义返回实体函数
思考问题: 但是,如果“根据日期查看所有收取金额记录”——不止一条记录吧,给你U层返回一个实体,能实现此功能吗?当然不能。
如何解决?
面对此问题,如何解决,你想过吗?——你说,返回DataSet或DataTable不就得了吗。你看,Out了吧….
偷偷告诉大家,还是返回实体,但是这次不是返回一个实体啦,是返回”一群“实体(实体集合)
(上篇博客链接:《DataSet转换为实体(函数)》)
本篇博客就介绍,如果由DataSet转换为泛型集合(集合中存放的是实体,即:实体集合) 涉及到“泛型”知识点,请参考:《泛型》
例子:机房收费系统——查看某段日期内收取金额记录
只写D层
1,查询某段日期内收取金额记录——CheckGetRechargeInfo(参数)——返回值:充值信息实体泛型集合
2,数据集转换为泛型集合——DataSetToList(参数)——返回值:充值信息实体的泛型集合
''' <summary> ''' 数据表转换为泛型集合 ''' </summary> ''' <param name="dt">数据表</param> ''' <returns>充值基本信息实体的泛型集合</returns> ''' <remarks></remarks> Public Function DataSetToList(ByVal dt As DataTable) As IList(Of Entity.RechargeInfoEntity) Implements IDAL.IRechargeInfoDAL.DataSetToList '定义泛型集合 Dim list As New List(Of Entity.RechargeInfoEntity) Dim type As Type = GetType(Entity.RechargeInfoEntity) '定义临时变量 Dim tempName As String '遍历数据表中的每一行 For Each dr As DataRow In dt.Rows '创建充值基本信息实体类 Dim enRechargeInfo As New Entity.RechargeInfoEntity Dim Propertys() As System.Reflection.PropertyInfo = enRechargeInfo.GetType().GetProperties() '获得实体类enRechargeInfo的所有属性,并存放到数组中 '遍历该对象的所有属性 For Each pi As System.Reflection.PropertyInfo In Propertys tempName = pi.Name '将属性名称赋值给临时变量 '检查DataTable是否包含此列(列名=对象的属性名) If dt.Columns.Contains(tempName) Then '如果包含此列 If Not pi.CanWrite Then '如果该属性不可写,直接跳出 Continue For End If '如果该属性可写入 Dim value As Object = dr(tempName) '如果非空,则赋给对象的属性 If Not IsNothing(value.ToString()) Then Dim a As String = value.ToString().Trim() pi.SetValue(enRechargeInfo, a, Nothing) End If End If Next list.Add(enRechargeInfo) '将充值信息实体添加到集合中 Next Return list '返回泛型集合 End Function
3,B、U层依次调用
选择‘起始日期’和‘终止日期’点击“查看”按钮,即可查看该段日期段的收取金额记录:
其实在后来的泛型集合(泛型实体类)应用中也遇到了一些问题,最后也算是解决了吧。如果谁想尝试泛型,可以和我交流一下,大家一起沟通学习一下,一起提高!!
相关文章推荐
- DataSet、DataTable转换List(泛型集合与DataSet互相转换 )
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- 将一个DataTable转换成一个List<T>的泛型集合
- //DataSet与泛型集合间的互相转换
- DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好)
- 泛型集合的运用--DataSet转换为泛型集合
- 将DataTable转换成List<T>泛型集合助手类
- DataSet和List<T> 泛型之间互相转换
- 将查询字符串解析转换为泛型List的名值集合.
- DataSet和List 泛型之间互相转换 (转载)
- DataSet与泛型集合间的互相转换
- List转DataTable(反射) ; 将泛型集合类转换成DataTable ; 将集合类转换成DataTable
- DataSet与泛型集合间的互相转换改进
- Jackson如何实现json字符串和泛型List集合之间的转换
- c#[ASP.NET]泛型集合与DataSet互相转换
- C#控制台基础 List泛型集合与对应的数组相互转换实现代码
- DataSet与泛型集合间的转换
- 泛型集合与DataSet互相转换