C# 删除并替换列名称DataTable c

C# 删除并替换列名称DataTable c,c#,asp.net,.net,asp.net-core,C#,Asp.net,.net,Asp.net Core,我有这样一个数据表: DataTable dataTable = new DataTable(); dataTable.Columns.Add("A", typeof(string)); dataTable.Columns.Add("B", typeof(string)); dataTable.Columns.Add("C", typeof(string)); List<string> headersT

我有这样一个数据表:

        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("A", typeof(string));
        dataTable.Columns.Add("B", typeof(string));
        dataTable.Columns.Add("C", typeof(string));

        List<string> headersToSkip = new List<string>() { "A", "B" };
        Dictionary<string, string> headersToReplace = new Dictionary<string, string>() { { "C", "D" } };

        IEnumerable<DataColumn> queriableColumms = dataTable.Columns.Cast<DataColumn>().AsQueryable().ToList();

        var toBeRemoved = from DataColumn column in queriableColumms
                          where headersToSkip != null && headersToSkip.Contains(column.ColumnName)
                          select column;

        foreach (DataColumn column in toBeRemoved)
        {
            dataTable.Columns.Remove(column);
        }

        if (headersToReplace != null)
        {
            foreach (KeyValuePair<string, string> kvp in headersToReplace)
            {
                foreach (DataColumn column in dataTable.Columns.Cast<DataColumn>().AsQueryable().ToList())
                {
                    if (column.ColumnName.Equals(kvp.Key))
                        column.ColumnName = kvp.Value;
                }
            }
        }
Dictionary<string, string> headersToReplace = new Dictionary<string, string>() { { "C", "D" } };
foreach(var header in headersToReplace)
{
    dataTable.Columns[header.Key].ColumnName = header.Value;
}

是否可以高效地删除DataTable中的列并用其他列名替换列名。

高效地,如果您的意思是用更少的代码,您可以执行以下操作

Dictionary<string, string> headersToReplace = new Dictionary<string, string>() { { "C", "D" } };
foreach(var header in headersToReplace)
{
    dataTable.Columns[header.Key].ColumnName = header.Value;
}
删除列

List<string> headersToSkip = new List<string>() { "A", "B" };
foreach(var header in headersToSkip)
{
   dataTable.Columns.Remove(header);
}
Dictionary<string, string> headersToReplace = new Dictionary<string, string>() { { "C", "D" } };
foreach(var header in headersToReplace)
{
    dataTable.Columns[header.Key].ColumnName = header.Value;
}
要重命名列

Dictionary<string, string> headersToReplace = new Dictionary<string, string>() { { "C", "D" } };
foreach(var header in headersToReplace)
{
    dataTable.Columns[header.Key].ColumnName = header.Value;
}

在一个快速测试中,只需更改.ColumnName即可正常工作。。。有什么事不能做吗?