Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 将一个集合转换为一个DataTable
【标  题】:将一个集合转换为一个DataTable
【关键字】:DataTable
【来  源】:http://blog.csdn.net/suncsea/archive/2006/12/07/1433338.aspx

将一个集合转换为一个DataTable

Your Ad Here
  将一个集合转换为一个DataTable
                 suncsea 2006/12/7
在实际工作中,会遇到要求将一个集合如ArrayList转化成一个DataTable的情况,这样充分利用DataView等进行多条件排序等处理。有许多方式可以实现,下面主要介绍一种比较简单的方法:反射方式,希望能给读者一定的参考。
前提:
  1、具有属性的对象。sampleDataModle
  2、一个集合,我们以ArrayList为例arrayList
处理方式:
  采用反射机制。代码如下:
  ///<summary>
        ///说明:将一个ArrayList转化成一个DataView。
        ///</summary>    
        ///<param name="arrayList">一个ArrayList。</param>
        ///<returns>
        ///DataView:转换后的dataview。
        /// null:转换失败。
        ///</returns>
        private DataTable ConvertAArrayListToDataView(ArrayList arrayList)
        {
            DataTable dtTarget = new DataTable ();
            if (arrayList==null || arrayList .Count == 0) 
            {
                return null;
            }

            dtTarget.TableName = arrayList[0].GetType().Name;

            PropertyInfo [] piColumns = arrayList [0].GetType().GetProperties();

            //设置列
            foreach (PropertyInfo piColumn in piColumns)
            {
                dtTarget.Columns.Add(piColumn.Name);
            }

            //插入数据
            for (int rowIndex = 0; rowIndex < arrayList.Count; rowIndex++)
            {
                DataRow drRow = dtTarget.NewRow();

                for (int columnIndex = 0; columnIndex < piColumns.Length; columnIndex++)
                {
                    object tempItem = arrayList[rowIndex];
                    object newRow = tempItem.GetType().InvokeMember(piColumns[columnIndex].Name,
                        BindingFlags.GetProperty, null, tempItem, new object[] { });
                    if (newRow != null)
                    {
                        drRow[columnIndex] = newRow.ToString();
                    }
                }
                dtTarget.Rows.Add(drRow);

            }        

            return dtTarget;
        }
  在这个方法中,我们将DataTable内的所有列的类型设为string,这是个捷径,当然也是它的局限性。但这个方法的基本目的是得到DataTable,从而可像操作数据库表一样结合原来的ArrayList去操作ArrayList内所有的内容,从这个角度上讲,它的目的已经达到了。
在 VB 中调用 VC 写的 DLL:【上一篇】
[.net]标准 3DES 加密/解密:【下一篇】
【相关文章】
  • ADO.NET 2.0 - 如何将 DataView 转换成一个 DataTable
  • 使用DataTable进行检索和排序示例
  • 现存问题以及解决方案:在ASP.NET AJAX中从客户端向服务器端传送DataTable
  • DataTable,DataView和DataGrid中一些容易混淆的概念
  • DataView能对DataTable的内容做筛选和排序工作
  • 将datatable的值给List, 两个list中的item之间添加与清除,顺序变动
  • 现存问题以及解决方案:在ASP.NET AJAX客户端得到服务器端的DataTable
  • 关于DataTable内部索引已损坏的解决办法
  • ADO.NET 2.0 Dataset和Datatable 新功能新特性
  • JSF中commandLink与dataTable搭配不能正常工作的解决办法
  • 【随机文章】
  • 不能偷懒的^M
  • CGI脚本在WIN2000、WINNT下的安装
  • JS操作XML经典例子
  • Ghost for Linux 出色的硬盘对拷工具
  • Hacker文化
  • 求类成员在类中的偏移量
  • Resin和IIS集成后速度很慢的解决办法
  • 软件项目管理第二讲,如何带队伍
  • 吸血莱恩2 官方秘籍
  • 透明防火墙架设方法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.