DataTable转化为泛型集合

前一段时间,因为做机房重构基本思路都没有搞清楚,然后周围接触的概念太多了,就想一开始什么都加上,不堪重负,起步很慢。后来经亮哥提点,一点一点的加东西,就好很多了。

对于泛型集合,前面有很多男神女神已经写的很详细了。但是知识自己总结的才能算是印脑子里了。我就写写自己的理解吧。

看完关于泛型集合的相关资料(博客、设计模式、网上其他一些介绍。。。),理一理思路:

是什么?

[泛型是具有占位符(类型参数)的类、结构、接口和方法。这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。

泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。]——MSDN

泛型集合其实就是一个个的实体类集合,我们在没有接触这个概念前,数据库访问返回的类型有实体、DataTable、Boolean。下面是画了几张示意图:

有哪些好处?

如果不用泛型集合,你要是查询有多少个用户的时候(添加删除用户),单个实体和Boolean肯定是不行的,DataTable倒是可以,可以把但是它因为高耦合(一个用户信息变化,就得修改DataTable),使系统运行的性能会不好.

怎么用?

首先明白DataTable转化为泛型集合就是在转化类中写了一个转化方法,写好之后在D层实例化该类的返回类型。

Dim mylist As New List(Of 实体类)
mylist = GetGenerics.ConvertToList(Of 实体类)(DataTable返回的对象)

如:

<span style="font-size:18px;">Dim mylist As New List(Of Entity.Users)
mylist = GetGenerics.ConvertToList(Of Entity.Users)(dt)</span>
<span style="font-size:18px;">Return mylist
</span>

那么最后返回的值就是泛型集合了。

在这个学习过程中,我感受很多,由浅入深,一点一滴的积累,厚积薄发。

有什么理解有误的地方,希望各位帅哥美女们给指点指点。

时间: 2024-10-21 22:02:09

DataTable转化为泛型集合的相关文章

vb.net环境下将DataTable转成泛型集合方法

背景 做机房收费系统的时候,遇到这样一个问题,将数据库表中的数据取出一行,将每个单元格中的内容填充到窗体 的文本框中.考虑到用DataReader获取结果的复杂性,我就用了泛型集合.可是这么一用却出现了如图所示的问 题. 问题一: 出现这种问题,是因为在DataTable转实体类型时表的字段类型和实体的字段类型不一致造成的. 这个也可以 这么说,中国人的孩子都随父姓,这是传统.但孩子随母姓,就有些不妥. 问题二: 数据库表中字段名和要转换的实体属性字段名不一致,导致转换后实体中depart为空值

DateTable转化为泛型集合

public class ListUtil { public static List<T> ToList<T>(DataTable dt) { List<T> list = new List<T>(); T t = default(T); PropertyInfo[] propertyinfos = null; foreach (DataRow dr in dt.Rows) { t = Activator.CreateInstance<T>();

ConvertHelper与泛型集合

在机房重构时,我们经常会用到ConvertHelper.它把从数据库中查询到的dateTable(也是一个临时表)转化为泛型,然后再填充到DataGridView控件中.ConvertHelper类有两点体现了面向对象的思想.一是因为它是经常被使用而被封装起来的类:二是因为它的返回值是泛型集合,泛型集合使存储数据时灵活而安全,也体现了面向对象的思想. ConvertHelper与sqlHelper 一开始接触ConvertHelper,以为它和sqlHelper一样,后来发现它们因为作用不同引用

vb.net机房收费 &amp; 泛型集合-实现文本框显示记录

     做基本数据设定窗体,本以为实现这个小小的窗体应该是最简单的吧!不就是单击修改按钮,进行修改:然后单击更新按钮来对数据基本设定进行更新吗?可是当一出手就遇到了问题,数据表中的数据该怎么显示在文本框中呢?这真的一下子难住了自己!不过遇到问题总会有解决的办法. 既然是让实体一个一个返回到文本框中来,那么直接调用实体层应该就可以吧!这样不就可以完美的实现了吗?可是这样最大的缺点则是:以后遇到的控件与数据调用的窗体比比即是,这样不就又重蹈覆辙实现了代码的重复吗?很严重的违背了为了把重复的部分提取

机房重构——泛型集合

敲三层的时候就听师傅说过泛型,只不过当时没有特别的注意.当敲用户登录窗体时,我遇到这样的问题,就是我们需要经过验证输入的信息的正误之后才能登录或者不能登录.判断时,需要返回我们从数据库中查到的信息,那么问题就来了,如何返回呢? 一开始我一直用的是DataTable返回数据的,但是当去判断的时候我不知道如何下手了,按照以往的经验,我们可以使用table.rows()或table.field(),具体的实现方法可以自己试验一下.这种方法虽然可以实现,可是里面重复的内容太多了,尤其是每次使用一个字段时

泛型集合的使用

对于机房收费系统的重构.从大的方面来看.无非就是对于数据库的四个操作.增删改查.而且我们用的是三层架构进行重构.D层用来和数据库打交道.进行这四个操作就须要有返回值,增删改在这里不多说.可是当进行查的时候.d层须要数据给b层,那么我们以什么样的形式返回最好呢? 刚開始接触三层的时候,我返回的是datatable,就是dt.Rows[0]["xxx"]的形式,感觉实现了.就非常厉害了,后来通过与大家交流发现,事实上另一种更好用的方法.就是利用实体类填充泛型集合. 那么问题就出来了: 1.

C# 将list&lt;&gt;泛型集合 转化为 DataTable

使用案例:将页面easy ui 中datagrid表格中的数据,存成json字符串, 通过ajax和ashx传入C#将string类型的json字符串解析成list<>泛型集合, 由于业务需要,将本地sql不同表的数据和页面html的数据(通过webservice传入),放在一起处理数据. 转化方法: public class ListToDatatable { public ListToDatatable() { } public static DataTable ListToDataTab

[工具类]DataTable与泛型集合List互转

写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中主要使用了反射的方式动态的为属性赋值以及取值. public static class Extension { /// <summary> /// 将datatable转换为泛型集合 /// </summary> /// <typeparam name="TEntity

泛型集合转换为DataTable

在做项目中,遇到了将集合转换为DataTable的使用,在网上看了资料,在这里记录下来,分享. using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace Wolfy.List2DataTable { class Pro