C# 两张DataTable如何将其中一张需要的列数据给另外一张新表

  • 一张表作为源数据,另一张新表,使用table1.Columns.Add()的方法加入源表的列数据的话会报,字段已属于另一张表。所有使用DataView 获取源数据表的所有数据,在使用ToTable方法把需要的列数据给到另一张表里。这时筛选出来的就是我们需要的表数据了。
  • 代码部分
//dtSource源数据表
 public static MemoryStream ExportMemoryStream(DataTable dtSource, ExcelConfig excelConfig)
        {
            int colint = 0;
            //新表
            DataTable dataTable = new DataTable() ;
            List<string> namelist = new List<string>();
            int mark = 0;
            for (int i = 0; i < dtSource.Columns.Count;i++)
            {
                if (mark==1) {
                    //如果匹配上重新获取dtSource的第一个字段匹配
                    i = 0;
                    //匹配状态恢复用于下一次的记录
                    mark = 0;
                }
                DataColumn column = dtSource.Columns[i];
                if (excelConfig.ColumnEntity[colint].Column == column.ColumnName)
                {
                    string[] names = new string[excelConfig.ColumnEntity.Count];
                    namelist.Add(column.ColumnName);
                    if (colint == excelConfig.ColumnEntity.Count - 1)
                    {
                        for (int a = 0; a < namelist.Count; a++)
                        {
                            names[a] = namelist[a];
                        }
                        //获取表所有数据
                        DataView view = dtSource.DefaultView;
                        //要保留下来的列
                        dataTable = view.ToTable(false, names);
                        break;
                        // dtSource.Columns.Remove(column.ColumnName);
                    }
                    mark = 1;//字段匹配上了
                    if (colint < excelConfig.ColumnEntity.Count - 1)
                    {
                        colint++;
                    }
                }
              
            }
            dtSource = dataTable;
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值