在DataTable中读取一些数据(来自excel文件),现在我想过滤它并仅将特定列复制到另一个列中!
dataTable格式:
some data
ColA|ColB|ColC
xxxx|xxxx|xxxx
some data
some data
表示与ColA-ColC无关的其他表格数据
如何将带有xxxx的ColA-ColC复制到新的DataTable?
THX
答案 0 :(得分:32)
您只需使用DataView.ToTable():
即可System.Data.DataView view = new System.Data.DataView(yourOriginalTable);
System.Data.DataTable selected =
view.ToTable("Selected", false, "col1", "col2", "col6", "col7", "col3");
答案 1 :(得分:21)
复制整个表并删除您不想要的列。
DataTable copyDataTable;
copyDataTable = table.Copy();
copyDataTable.Columns.Remove("ColB");
或
int columnIndex = 1;//this will remove the second column
DataTable copyDataTable;
copyDataTable = table.Copy();
copyDataTable.Columns.RemoveAt(columnIndex);
答案 2 :(得分:2)
请检查
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
上面的例子假设两个表都有相同的数量,类型和列顺序。
这是实际的link
答案 3 :(得分:1)
仅使用兴趣列定义您的副本DataTable。您可以循环使用源行的列,并使用以下示例代码将值设置为目标行:
public void IntegrateRow(DataRow p_RowCible, DataRow p_RowSource)
{
try
{
foreach (DataColumn v_Column in p_RowCible.Table.Columns)
{
string ColumnName = v_Column.ColumnName;
if (p_RowSource.Table.Columns.Contains(ColumnName))
{
p_RowCible[ColumnName] = p_RowSource[ColumnName];
}
}
}
catch (Exception e)
{
...
答案 4 :(得分:0)
此方法接收数据表(TextFileTable)作为参数,并继续将TextFileTable的选定内容复制到tblFormat表中。在add row语句中,列数必须与目标ted表中的列数相匹配,即使两个表可以有不同的大小。
public DataTable CopyTable (DataTable TextFileTable)
{
DataTable tblFormat = new DataTable();
tblFormat.Columns.Add("ColumnA");
tblFormat.Columns.Add("ColumnB");
tblFormat.Columns.Add("ColumnC");
tblFormat.Columns.Add("ColumnD");
tblFormat.Columns.Add("ColumnE");
for (int i = 0; i < TextFileTable.Rows.Count; i++)
{
tblFormat.Rows.Add(new string[] { TextFileTable.Rows[i][0].ToString(), TextFileTable.Rows[i][1].ToString(),
TextFileTable.Rows[i][2].ToString(), TextFileTable.Rows[i][8].ToString(), TextFileTable.Rows[i][9].ToString() });
}
return tblFormat;
}
答案 5 :(得分:0)
可以使用LINQ来实现
假设我们有两个DataTable
。 1. dtSource
和2. dtDestination
。
如果dtDestination
没有行,则使用下面的代码生成空白行。
dtSource.AsEnumerable().All(row => { dtDestination.Rows.Add(); return true; });
下面的代码会将特定的DataColumn
数据复制到另一个DataColumn
的{{1}}中。假设两个表的行数相同。
DataTable
答案 6 :(得分:0)
vb.net中的修复
作为DataView的昏暗视图=新的DataView(TB) 选择Dim作为DataTable = view.ToTable(“ Selected”,False,“ id”,“ col1”,“ col2”)