泛型集合的运用

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

/// <summary>

  /// DataSet装换为泛型集合

  /// </summary>

  /// <typeparam name="T">泛型</typeparam>

  /// <param name="p_DataSet">DataSet</param>

  /// <param name="p_TableIndex">待转换数据表索引</param>

  /// <returns>泛型集合</returns>

  private
static IList<T> DataSetToIList<T>(DataSet p_DataSet, int
p_TableIndex)

  {

      if
(p_DataSet == null
|| p_DataSet.Tables.Count < 0)

          return
null;

      if
(p_TableIndex > p_DataSet.Tables.Count - 1)

          return
null;

      if
(p_TableIndex < 0)

          p_TableIndex = 0;

      if
(p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)

          return
null;

      DataTable p_Data = p_DataSet.Tables[p_TableIndex];

      // 返回值初始化

      IList<T> result = new
List<T>();

      for
(int
j = 0; j < p_Data.Rows.Count; j++)

      {

          T _t = (T)Activator.CreateInstance(typeof(T));

          PropertyInfo[] propertys = _t.GetType().GetProperties();

          foreach
(PropertyInfo pi in
propertys)

          {

              for
(int
i = 0; i < p_Data.Columns.Count; i++)

              {

                  // 属性与字段名称一致的进行赋值

                  if
(pi.Name.ToLower().Equals(p_Data.Columns[i].ColumnName.ToLower()))

                  {

                      // 数据库NULL值单独处理

                      if
(p_Data.Rows[j][i] != DBNull.Value)

                      {

                          //if (p_Data.Rows[j][i] is byte[])

                          //{

                          //    byte[] bytes = (byte[])p_Data.Rows[j][i];

                          //    MemoryStream ms = new MemoryStream(bytes);

                          //    Image img = Image.FromStream(ms);

                          //    pi.SetValue(_t, img, null);

                          //    continue;

                          //}

                          pi.SetValue(_t, p_Data.Rows[j][i], null);

                      }

                      else

                          pi.SetValue(_t, null, null);

                      break;

                  }

              }

          }

          result.Add(_t);

      }

      return
result;

  }

  

时间: 2024-08-01 20:26:25

泛型集合的运用的相关文章

类库,委托,is和as运算符,泛型集合

类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debug文件夹下找到dll文件 委托:委托可以理解为:函数的指针 关键词:delegate 声明委托类型:public delegate int FirstDel(int a, int b); FirstDel不是类,是委托变量,不能实例化(不能new), 创建委托变量:FirstDel 名字 = 与这个

机房重构——泛型集合

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

DataSet装换为泛型集合 222

#region DataSet装换为泛型集合 /// <summary> /// 利用反射和泛型 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static List<T> ConvertToList<T>(DataTable dt) { // 定义集合 List<T> ts

面向对象--类库、委托、is和as运算符、泛型集合

类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相应的dll文件,确定.然后在开头加上 [using 命名空间名字] 委托: 委托可以理解为函数的指针. 关键词:delegate 声明:public delegate int FirstDel(int a, int b); 创建委托变量:FirstDel 名字 = 与这个委托类型相同的方法; 在cl

数据模型和数据访问类以及属性扩展和泛型集合

数据模型: 数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,将数据表中的行数据组成一个同样结构的对象,方便使用. 1 public class Car 2 { 3 SqlConnection conn = null; 4 SqlCommand com = null; 5 public Car() 6 { 7 conn = new SqlConnection("server=.;database=ADOlianxi0425;user=sa;pwd=123;"); 8 com

C#泛型集合与非泛型集合_Felix(转自新浪博客)

在.NET FCL为我们提供了很多集合类型,是编程中非常有力的工具.泛型集合主要在System.Collections.Generic名称空间中,而非泛型集合主要在System.Collections,首先抛出结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类.因为,1.泛型编程是从c#2.0开始才被.net支持的.2.泛型集合在性能和类型安全方面优于非泛型集合. 非泛型集合-System.Collections名字空间中的类主要包括ArrayList, Hashtable

编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合

建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况: ArrayList al=new ArrayList(); al.Add(0); al.Add(1); al.Add("mike"); foreach (var item in al) { Console.WriteLine(item); } 上面这段代码充分演

进一步对泛型集合的思考

一.前言: 经常听师哥师姐们说底层这个底层那个,从没见过这个"底层".后来师姐就在项目中应用了这个底层类库,从听说它到自己亲自用它,才发现它还真是强大的不得了啊!经常跟着师哥师姐们的课听,就是想跟这个底层混个"脸熟".我也经常是不懂装懂,其实真正听懂的也没多少啊..不仅脸熟了,还脸皮厚呢.. 言归正传为什么又提起泛型集合了呢?第一次接触是在机房重构的时候,Data Table转换成泛型集合.后来敲这个系统的时候,看到封装的类库中绝大多数的返回结果都是泛型集合.委托和

泛型学习第三天——C#读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

定义一个类: public class UserInfo    {        public System.Guid ID { get; set; } public string LoginName { get; set; } public string LoginPwd { get; set; }    } /// <summary> /// 获取UserInfo泛型集合 /// </summary> /// <param name="connStr"

三层架构下带实体参数泛型集合的“传递”

看过我的三种方法实现从"一个(组)查询过程中返回两个表的查询结果"这篇博客的同学,可能大都对最后一种方法比较感兴趣.即:把查询结果放到泛型集合中,在两个将泛型集合放入另一个新的泛型集合,新集合的参数为object.(链接:http://blog.csdn.net/u010191243/article/details/38798773) D层代码: Public Function QueryCardStudentInfo(ByVal enCard As CardEntity, ByVal