在CS里,我有一个DataTable,但这个DataTable有多个列,我只要要部分列的数据比如这个DataTable有如下列名:Id, Name, Age, Department, Sex, Tel, Fax。
我只要提取:Id,Name,Tel中的数据这数据量挺多的。请问有什么方法可以高效的提取呢??可不要说一条一条数据来提取

解决方案 »

  1.   

    你可以从数据源那 筛选出来 给DataTable
    如果控制不了数据源,那么从DataTable里筛选出你需要的列 赋给新的Datable
    网上这种方法挺多的 像合并datatable啦
      

  2.   

    你可以从数据源那 筛选出来 给DataTable
    如果不行,你可以New个新的DataTalbe,DataTable中添加你需要显示的列,
    做一个空的talbe结构,将有数据的talbe Merge到空结构中
      

  3.   


    控制不了数据源
    要从DataTable里筛选出我想要的列,赋给新的Datable
    就是这个不会写。
      

  4.   

    http://blog.sina.com.cn/s/blog_498eab7d0100fvni.html
    希望有帮助
      

  5.   

                DataTable dt1 = dt.Copy();
                for(int i=dt1.Columns.Count-1;i>=0;i--)
                {
                    //过滤掉第2列和第8列
                    if (dt1.Columns[i].ColumnName == "列8" || dt1.Columns[i].ColumnName == "列2")
                    {
                        dt1.Columns.RemoveAt(i);
                    }
                }
      

  6.   

    DataTable dt1 = dt.Copy();
    这不是整个复制进去了么
    只是要遍历列名  不符合的列就删掉啊
      

  7.   


    做好的办法是从sql语句入手,
    select Id,Name,Tel(想要显示的列) from tb这样做sql执行的效率会提高,c#也不需要写任何代码
      

  8.   


    这个表的数据,是固定的,是从Excel里复制过来,因为还有其他应用要用到这个Excel。所以说,这个数据源是固定的,只能在C#里面操作了
      

  9.   


    这个表是从Excel里复制过来所得,所以说,不是由我定义的
    我呢,只是想从中拿出部分的列的数据来Copy到数据库中...
      

  10.   

    大概理解你的意思了,是说现在你通过导入excel里的数据到了数据库里面,现在呢,你又想在不破坏这个数据库的情况下新建一个数据库,然后这个数据库里还有你想要的列的数据?
      

  11.   

    试试这个吧        public DataTable Test(DataTable dataSource)
            {
                List<string> lsCol = new List<string>();
                //记录想留下来的列名
                lsCol.Add("Id");
                lsCol.Add("Name");
                lsCol.Add("Tel");
                DataTable result = dataSource.Copy();
                foreach (DataColumn column in dataSource.Columns)
                {
                    if(lsCol.Contains(column.ColumnName)) continue;
                    result.Columns.Remove(result.Columns[column.ColumnName]);
                }
                return result;
            }
      

  12.   

    这不简单的跟个1一样,直接
    dt.Columns.Remove("要删除的列名")
    不就OK了?