• DataTable 操作集合


     

    #region 根据datatable获得列名     public static string[] GetColumnsByDataTable(DataTable dt)
            /// <summary>
            /// 根据datatable获得列名
           /// </summary>
            /// <param name="dt">表对象</param>
            /// <returns>返回结果的数据列数组</returns>
            public static string[] GetColumnsByDataTable(DataTable dt)
            {
                string[] strColumns = null;
    
    
                if (dt.Columns.Count > 0)
                {
                    int columnNum = 0;
                    columnNum = dt.Columns.Count;
                    strColumns = new string[columnNum];
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        strColumns[i] = dt.Columns[i].ColumnName;
                    }
                }
    
    
                return strColumns;
            } 
            #endregion 
     

    把datatable的结构全部数据或部分数据复制到一个新的datatable
    datatable复制表结构:我们可以使用.clone()方法;
      DataTable oldDT = GetDataTable();
      DataTable newDT = oldDT.Clone();


      把datatable中的所有信息复制到一个新的datatable,包括结构和数据:
      DataTable oldDT = GetDataTable();
      DataTable newDT = oldDT.Copy();


      复制datatable中的某一行:我们可以使用.ImportRow()方法;
      DataTable oldDT = GetDataTable();
      DataTable newDT = new DataTable();
      newDT.ImportRow(oldDT.Rows[1]);把原来datatable中的第二行数据复制到新的datatable中。

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace DataTableGroupDemo
    {
    class Program
    {
    static void Main(string[] args)
    {
    // 准备数据
    DataTable dt = new DataTable();
    // 创建列
    DataColumn dcName = new DataColumn("Name", typeof(string));
    DataColumn dcAge = new DataColumn("Age", typeof(Int32));
    DataColumn dcScore = new DataColumn("Score", typeof(Int32));
    // 添加列
    dt.Columns.Add(dcName);
    dt.Columns.Add(dcAge);
    dt.Columns.Add(dcScore);
    // 添加数据
    dt.Rows.Add(new object[] { "Tom", 23, 67 });
    dt.Rows.Add(new object[] { "Tom", 23, 67 });
    dt.Rows.Add(new object[] { "Jack", 21, 100 });
    dt.Rows.Add(new object[] { "Greey", 24, 56 });
    dt.Rows.Add(new object[] { "Kevin", 24, 77 });
    dt.Rows.Add(new object[] { "Tom", 23, 82 });
    dt.Rows.Add(new object[] { "Greey", 24, 80 });
    dt.Rows.Add(new object[] { "Jack", 21, 90 });


    #region 使用Linq expression to DataTable group by
    var query = from p in dt.AsEnumerable()
    group p by new { name = p.Field<string>("Name"),score=p.Field<Int32>("Score") } into m
    select new
    {
    Name = m.Key.name,
    Score=m.Key.score
    };
    #endregion

    // 输出
    Console.WriteLine("Linq");
    foreach (var item in query)
    {
    Console.WriteLine(item);
    }

    Console.WriteLine("GroupBy");
    IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(dr => dr["Name"].ToString());
    foreach (IGrouping<string, DataRow> ig in result)
    {
    Console.WriteLine("key=" + ig.Key + ":");
    foreach (DataRow dr in ig)
    {
    Console.WriteLine(dr["Name"].ToString().PadRight(10) + dr["Age"].ToString().PadRight(10) + dr["Score"].ToString().PadRight(10));
    }

    }

    Console.ReadKey();
    }
    }
    }

  • 相关阅读:
    搜索优化
    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)
    Tomcat7.0.22在Windows下详细配置过程
    maven 安装配置
    Venus wiki
    搜索引擎基本原理及实现技术——用户查询意图分析
    sql 表自连接
    select 多表查询
    select 嵌套
    Ioc和Aop扩展--多种方式实现依赖注入(构造注入,p命名空间注入,集合类型注入,注入null和注入空值)
  • 原文地址:https://www.cnblogs.com/liangyuwen/p/13274260.html
Copyright © 2020-2023  润新知