在CS里,我有一个DataTable,但这个DataTable有多个列,我只要要部分列的数据比如这个DataTable有如下列名:Id, Name, Age, Department, Sex, Tel, Fax。
我只要提取:Id,Name,Tel中的数据这数据量挺多的。请问有什么方法可以高效的提取呢??可不要说一条一条数据来提取
我只要提取:Id,Name,Tel中的数据这数据量挺多的。请问有什么方法可以高效的提取呢??可不要说一条一条数据来提取
如果控制不了数据源,那么从DataTable里筛选出你需要的列 赋给新的Datable
网上这种方法挺多的 像合并datatable啦
如果不行,你可以New个新的DataTalbe,DataTable中添加你需要显示的列,
做一个空的talbe结构,将有数据的talbe Merge到空结构中
控制不了数据源
要从DataTable里筛选出我想要的列,赋给新的Datable
就是这个不会写。
希望有帮助
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);
}
}
这不是整个复制进去了么
只是要遍历列名 不符合的列就删掉啊
做好的办法是从sql语句入手,
select Id,Name,Tel(想要显示的列) from tb这样做sql执行的效率会提高,c#也不需要写任何代码
这个表的数据,是固定的,是从Excel里复制过来,因为还有其他应用要用到这个Excel。所以说,这个数据源是固定的,只能在C#里面操作了
这个表是从Excel里复制过来所得,所以说,不是由我定义的
我呢,只是想从中拿出部分的列的数据来Copy到数据库中...
{
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;
}
dt.Columns.Remove("要删除的列名")
不就OK了?