DataSet装换为泛型集合

/// <summary>
/// DataSet装换为泛型集合
/// </summary>
/// <typeparam name="MoDeviceAbnormalStateRecord"></typeparam>
/// <param name="p_DataSet">DataSet</param>
/// <param name="p_TableIndex">待转换数据表索引</param>
/// <returns></returns>
/// 2008-08-01 22:46 HPDV2806
public static List<MoDeviceAbnormalStateRecord> DataSetToIList(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;

        DataTable p_Data = p_DataSet.Tables[p_TableIndex];
        // 返回值初始化
        List<MoDeviceAbnormalStateRecord> result = new List<MoDeviceAbnormalStateRecord>();
        for (int j = 0; j < p_Data.Rows.Count; j++)
        {
            MoDeviceAbnormalStateRecord _t = (MoDeviceAbnormalStateRecord)Activator.CreateInstance(typeof(MoDeviceAbnormalStateRecord));
            PropertyInfo[] propertys = _t.GetType().GetProperties();
            foreach (PropertyInfo pi in propertys)
            {
                for (int i = 0; i < p_Data.Columns.Count; i++)
                {
                    // 属性与字段名称一致的进行赋值
                    MoDeviceAbnormalStateRecord Mo = new MoDeviceAbnormalStateRecord();
                    if (pi.Name.Equals(Mo.Datal2MO(p_Data.Columns[i].ColumnName)))
                    {
                        // 数据库NULL值单独处理
                        if (p_Data.Rows[j][i] != DBNull.Value)
                            pi.SetValue(_t, p_Data.Rows[j][i], null);
                        else
                            pi.SetValue(_t, null, null);
                        break;
                    }
                }
            }
            result.Add(_t);
        }
        return result;
    }

原文地址:http://blog.51cto.com/11718731/2088363

时间: 2024-08-11 04:56:21

DataSet装换为泛型集合的相关文章

DataSet装换为泛型集合 222

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

DataSet和List&lt;T&gt; 泛型之间互相转换 (转载, 作者写的很好)

/DataSet与泛型集合间的互相转换 //利用反射机制将DataTable的字段与自定义类型的公开属性互相赋值. //注意:从DataSet到IList<T>的转换,自定义类型的公开属性必须与DataTable中的字段名称 //一致,才能到达想要的结果.建议DataTable的定义从数据库来,自定义类型用O/R Mapping的方式获得. //代码说明 /// <summary> /// 泛型集合与DataSet互相转换 /// </summary> using Sy

泛型集合的运用

? 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&

泛型学习第三天——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"

读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

转自 http://www.cnblogs.com/wuhuisheng/archive/2012/04/26/2471733.html 1 /// <summary> 2 /// 获取UserInfo泛型集合 3 /// </summary> 4 /// <param name="connStr">数据库连接字符串</param> 5 /// <param name="sqlStr">要查询的T-SQL&

进一步对泛型集合的思考

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

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

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

泛型集合的使用

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

泛型集合的静态扩展方法

C# 中的泛型集合提供了很多基于 Enumerable 的静态扩展方法,例如  Find,  OrderBy , Average ,Distinct 等,在使用基础数据类型的集合时,可以直接调用这些方法,但如果是自定义类型就应当根据扩展方法所要求的接口,实现自定类型的扩展接口类,其实质就是使用扩展类的实例方法完成特定的操作逻辑,否则对集合的操作将是无效的.本文以 OrderBy 为例进行说明 . 首先需要一个自定义的类 ,这是一个表示自然人属性的简单类,列出了姓名.年龄和性别(这里使用了枚举类型