c# - 如何合并两个同名但区分大小写的数据表?
问题描述
我从两个来源获取动态数据。列名相同,但大小写不同。在合并数据表时,它会创建重复的列。无论大小写如何,我都想与相同的列合并。
代码:
dataTable1.merge(dataTable2);
我在 dataTable1 中的列名是:
Title
filePath
我在 dataTable2 中的列名是:
title
FilePath
它应该认为这两列是相同的。
我的代码:
public void TestOnMergeDataTables()
{
DataTable dt = new DataTable("Order");
DataColumn dc = dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(String));
dt.Rows.Add(1, "pramod");
dt.Rows.Add(2, "ravi");
dt.Rows.Add(3, "deepak");
dt.Rows.Add(4, "kiran");
dt.Rows.Add(5, "madhu");
DataTable dt2 = new DataTable("Order");
DataColumn dc2 = dt2.Columns.Add("ID", typeof(int));
dt2.Columns.Add("name", typeof(String));
dt2.Columns.Add("Type", typeof(String));
dt2.Rows.Add(6, "ashu", "Gen");
dt2.Rows.Add(7, "rudra", "Gen");
dt2.Rows.Add(8, "kavita", "Gen");
dt2.Rows.Add(9, "suman", "Gen");
dt2.Rows.Add(10, "lakshman", "Gen");
dt.Merge(dt2,true);
}
结果: 程序的输出
它应该将 Name , name 列视为同一列
解决方案
一个简单的方法是使用 linq。(这不会删除列中存在的重复项)。要删除重复项,您必须使用 GroupBy。
var mergedTable = dataTable1.AsEnumerable()
.Select(row => new { Key = dataRow["Title"], Row = dataRow })
.Union(dataTable1.AsEnumerable()
.Select(row => new { Key = dataRow["title"], Row = dataRow }))
.CopyToDataTable();
推荐阅读
- javascript - 使用 useContext 钩子全局反应上下文
- swift - 安全处理超出范围异常的性能?
- python - 在 skgarden.quantile.RandomForestQuantileRegressor.fit() 中无法识别 sample_weight
- python - 在 js.dump 中生成额外的大括号
- c# - 无法使 Polly 超时策略覆盖 HttpClient 默认超时
- linux - 无法在 Linux kdb 中分解功能
- html - 如何创建一个复选框作为可点击标签?
- flutter - 如何将背景颜色设置为cardview颤动
- reactjs - 使用 babel-plugin-react-css-modules 的子组件的类名不正确
- php - PHP - 带有二进制正文数据的 POST 请求 - 适用于 CURL,但不适用于 Laravel