在将此问题标记为重复之前,任何人都可以帮助我将多个数据表合并到一个数据表中。
这是我的代码:
static void Main(string[] args)
{
var tblA = new DataTable();
tblA.Columns.Add("ChannelNodeCategoryName");
tblA.Columns.Add("CategoryName");
tblA.Columns.Add("Language");
var tblB = new DataTable();
tblB.Columns.Add("ChannelNodeDescription");
tblB.Columns.Add("CategoryName");
tblB.Columns.Add("Language");
DataRow row = tblA.NewRow();
row["ChannelNodeCategoryName"] = "Comfort";
row["CategoryName"] = "Solution";
row["Language"] = "en";
tblA.Rows.Add(row);
DataRow row1 = tblA.NewRow();
row1["ChannelNodeCategoryName"] = "Confort";
row1["CategoryName"] = "Solution";
row1["Language"] = "fr";
tblA.Rows.Add(row1);
DataRow row2 = tblA.NewRow();
row2["ChannelNodeCategoryName"] = "Women";
row2["CategoryName"] = "Test";
row2["Language"] = "en";
tblA.Rows.Add(row2);
DataRow row3 = tblA.NewRow();
row3["ChannelNodeCategoryName"] = "Femmes";
row3["CategoryName"] = "Test";
row3["Language"] = "fr";
tblA.Rows.Add(row3);
//---------------------------------------------------------------------------------
DataRow sec = tblB.NewRow();
sec["ChannelNodeDescription"] = "Men's T-shirts - Buy T-shirts for men online ";
sec["CategoryName"] = "Solution";
sec["Language"] = "en";
tblB.Rows.Add(sec);
DataRow sec1 = tblB.NewRow();
sec1["ChannelNodeDescription"] = "T-shirts pour hommes - Achetez des";
sec1["CategoryName"] = "Solution";
sec1["Language"] = "fr";
tblB.Rows.Add(sec1);
DataRow sec2 = tblB.NewRow();
sec2["ChannelNodeDescription"] = "Jeans";
sec2["CategoryName"] = "Test";
sec2["Language"] = "en";
tblB.Rows.Add(sec2);
DataRow sec3 = tblB.NewRow();
sec3["ChannelNodeDescription"] = "jeans";
sec3["CategoryName"] = "Test";
sec3["Language"] = "fr";
tblB.Rows.Add(sec3);
//3rd table
var tblC = new DataTable();
tblC.Columns.Add("ChannelNodeMetaDetails");
tblC.Columns.Add("CategoryName");
tblC.Columns.Add("Language");
DataRow tlbCRow = tblC.NewRow();
tlbCRow["ChannelNodeMetaDetails"] = "t shirt for mens india";
tlbCRow["CategoryName"] = "Solution";
tlbCRow["Language"] = "en";
tblC.Rows.Add(tlbCRow);
DataRow tlbCRow1 = tblC.NewRow();
tlbCRow1["ChannelNodeMetaDetails"] = "t-shirt pour hommes en Inde";
tlbCRow1["CategoryName"] = "Solution";
tlbCRow1["Language"] = "fr";
tblC.Rows.Add(tlbCRow1);
//4th table
var tblD = new DataTable();
tblD.Columns.Add("ChannelNodeMetaTitle");
tblD.Columns.Add("CategoryName");
tblD.Columns.Add("Language");
DataRow tblDRow = tblD.NewRow();
tblDRow["ChannelNodeMetaTitle"] = "MT- PRFT Test";
tblDRow["CategoryName"] = "Solution";
tblDRow["Language"] = "en";
tblD.Rows.Add(tblDRow);
DataRow tblDRow1 = tblD.NewRow();
tblDRow1["ChannelNodeMetaTitle"] = "Meta titre";
tblDRow1["CategoryName"] = "Solution";
tblDRow1["Language"] = "fr";
tblD.Rows.Add(tblDRow1);
List<DataTable> dataTables = new List<DataTable>
{
tblA, tblB, tblC,tblD
};
DataTable dt = dataTables.MergeAll("CategoryName");
Console.ReadLine();
}
注意:我在这里找到了 MergeAll 函数Combining n DataTables into a Single DataTable
MergeAll 函数不返回属于“fr”语言的行。
我有可能获得 n 个表,这些表将始终包含“CategoryName”和“Language”列以及它们自己的列。(比如这里的“ChannelNodeCategoryName”或“ChannelNodeDescription”是它们自己的列,但有“Language” " 和 "CategoryName" 常见)。
我被困得很厉害。任何人都可以帮助我实现这一目标吗?谢谢

