在DataTable中讀取一些數據(來自excel文件),現在我想過濾這個數據並只將特定的列複製到另一個列!從一個DataTable複製特定列到另一個
dataTable的格式:
some data
ColA|ColB|ColC
xxxx|xxxx|xxxx
some data
some data
代表不相關的可樂COLC其他表數據
我怎麼能與XXXX複製可樂COLC到新的DataTable?
Thx
在DataTable中讀取一些數據(來自excel文件),現在我想過濾這個數據並只將特定的列複製到另一個列!從一個DataTable複製特定列到另一個
dataTable的格式:
some data
ColA|ColB|ColC
xxxx|xxxx|xxxx
some data
some data
代表不相關的可樂COLC其他表數據
我怎麼能與XXXX複製可樂COLC到新的DataTable?
Thx
複製整個表格並刪除不需要的列。
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);
你可以簡單地通過使用DataView.ToTable()做到這一點:
System.Data.DataView view = new System.Data.DataView(yourOriginalTable);
System.Data.DataTable selected =
view.ToTable("Selected", false, "col1", "col2", "col6", "col7", "col3");
請檢查該
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
上面的例子假設兩個表有相同的數量,類型和順序列。
這裏是實際link
定義您的副本的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)
{
...
這個方法接收的數據表(TextFileTable)作爲參數,並進行到TextFileTable的被選擇的內容複製到tblFormat表。在添加行語句中,列數必須與目標特德表中的列數相匹配,即使這兩個表可以具有不同的大小。
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;
}
我只加入了「.clear()」做副本後聲明()用這個複製的列。 – Enrico