Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何合并两个名称相同但区分大小写的数据表?_C#_Datatable - Fatal编程技术网

C# 如何合并两个名称相同但区分大小写的数据表?

C# 如何合并两个名称相同但区分大小写的数据表?,c#,datatable,C#,Datatable,我从两个来源获得动态数据。列名相同,但大小写不同。合并数据表时,它将创建重复的列。我希望与相同的列合并,而不考虑大小写 代码: 我在dataTable1中的列名是: Title filePath 我在dataTable2中的列名是: title FilePath 应考虑这两个列相同。 霉菌代码: public void TestOnMergeDataTables() { DataTable dt = new DataTable("Order");

我从两个来源获得动态数据。列名相同,但大小写不同。合并数据表时,它将创建重复的列。我希望与相同的列合并,而不考虑大小写

代码:

我在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();  

如果你能分享一个,那就太棒了。请发布你试图解决这个问题的尝试。目前,你的问题是要求我们创造一些尚不存在的东西,而不是修复一些不起作用的东西。因此,只关注后者,而前一类问题最终被关闭为离题。我不知道专栏名称。你能提供一个最小重复的例子吗?
var mergedTable = dataTable1.AsEnumerable()
                 .Select(row => new { Key = dataRow["Title"], Row = dataRow })
                 .Union(dataTable1.AsEnumerable()
                 .Select(row => new { Key = dataRow["title"], Row = dataRow }))
                 .CopyToDataTable();