DataTable加上编号,截取列

 
刚刚碰到对DataTable的操作,记录一下两个方法,或许对你有用
 
/// <summary>
/// 给已有 DataTable 的首列加上序号列
/// </summary>
/// <param name="srcTable"> 源数据表 </param>
/// <returns> 结果数据表 </returns>
private DataTable GetDataTable(DataTable srcTable)
{
    DataTable dstntnTable = new DataTable();
    dstntnTable.Columns.Add("Id", typeof(Int32));
    for (int i = 0; i < srcTable.Columns.Count; i++)
        dstntnTable.Columns.Add(srcTable.Columns[i].ColumnName, srcTable.Columns[i].DataType);
    int srcColCount = srcTable.Columns.Count;
    int srcRowCount = srcTable.Rows.Count;
    int dstntnRowCount = 0;
    for (int j = 0; j < srcRowCount; j++)
    {
        DataRow newRow = dstntnTable.NewRow();
        newRow[0] = (++dstntnRowCount);
        for (int k = 0; k < srcColCount; k++)
            newRow[k + 1] = srcTable.Rows[j][k];
        dstntnTable.Rows.Add(newRow);
    }
    return dstntnTable;
}
 
/// <summary>
/// 取出指定数据表中指定列数据并在首列加上编号列
/// </summary>
/// <param name="srcTable"> 源数据表 </param>
/// <param name="para"> 需要取出源数据表的列名 </param>
/// <returns> 结果数据表 </returns>
private DataTable GetDataTable(DataTable srcTable, params string[] para)
{
    DataTable dstntnTable = new DataTable();
    dstntnTable.Columns.Add("Id", typeof(Int32));
    for (int i = 0; i < para.Length; i++)
        dstntnTable.Columns.Add(para[i], srcTable.Columns[para[i]].DataType);
    int srcRowCount = srcTable.Rows.Count;
    int dstntnRowCount = 0;
    for (int j = 0; j < srcRowCount; j++)
    {
        DataRow newRow = dstntnTable.NewRow();
        newRow["Id"] = (++dstntnRowCount);
        for (int k = 0; k < para.Length; k++)
            newRow[para[k]] = srcTable.Rows[j][para[k]];
        dstntnTable.Rows.Add(newRow);
    }
    return dstntnTable;
}

你可能感兴趣的:(Datatable)