private static void DemonstrateMergeTable()
{
DataTable table1 = new DataTable("Items");
// Add columns
DataColumn idColumn = new DataColumn("id", typeof(System.Int32));
DataColumn itemColumn = new DataColumn("item", typeof(System.Int32));
table1.Columns.Add(idColumn);
table1.Columns.Add(itemColumn);
// Set the primary key column.
table1.PrimaryKey = new DataColumn[] { idColumn };
// Add RowChanged event handler for the table.
table1.RowChanged += new
System.Data.DataRowChangeEventHandler(Row_Changed);
// Add ten rows.
DataRow row;
for (int i = 0; i <= 9; i++)
{
row = table1.NewRow();
row["id"] = i;
row["item"] = i;
table1.Rows.Add(row);
}
// Accept changes.
table1.AcceptChanges();
PrintValues(table1, "Original values");
// Create a second DataTable identical to the first.
DataTable table2 = table1.Clone();
// Add column to the second column, so that the
// schemas no longer match.
table2.Columns.Add("newColumn", typeof(System.String));
// Add three rows. Note that the id column can't be the
// same as existing rows in the original table.
row = table2.NewRow();
row["id"] = 14;
row["item"] = 774;
row["newColumn"] = "new column 1";
table2.Rows.Add(row);
row = table2.NewRow();
row["id"] = 12;
row["item"] = 555;
row["newColumn"] = "new column 2";
table2.Rows.Add(row);
row = table2.NewRow();
row["id"] = 13;
row["item"] = 665;
row["newColumn"] = "new column 3";
table2.Rows.Add(row);
// Merge table2 into the table1.
Console.WriteLine("Merging");
table1.Merge(table2, false, MissingSchemaAction.Add);
PrintValues(table1, "Merged With table1, schema added");
}
private static void Row_Changed(object sender,
DataRowChangeEventArgs e)
{
Console.WriteLine("Row changed {0}\t{1}", e.Action,
e.Row.ItemArray[0]);
}
private static void PrintValues(DataTable table, string label)
{
// Display the values in the supplied DataTable:
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.Write("\t " + row[col].ToString());
}
Console.WriteLine();
}
}
方法2:多个for循环遍历 利用主键value值相同合并
public string GetShengAnakysis(StatisticQuery model)
{
string strJson1 = AccessibilityConcAnalysis("PM25",model.beginTime,model.endTime, model.Stns.Split(',').Length);
string strJson2 = AccessibilityRateAnalysis("EG", model.beginTime, model.endTime, model.Stns.Split(',').Length);
string strJson3 = AccessibilityRateAnalysis("HPS", model.beginTime, model.endTime, model.Stns.Split(',').Length);
DataTable dtPM = JsonConvert.DeserializeObject(strJson1);
DataTable dtEG = JsonConvert.DeserializeObject(strJson2);
DataTable dtHPS = JsonConvert.DeserializeObject(strJson3);
List list = new List();
for (int i = 0; i < dtPM.Rows.Count; i++)
{
ShengAnakysis obj = new ShengAnakysis();
for (int j = 0; j < dtEG.Rows.Count; j++)
{
for (int k = 0; k < dtHPS.Rows.Count; k++)
{
if (dtPM.Rows[i]["City"].ToString()== dtEG.Rows[j]["City"].ToString() && dtPM.Rows[i]["City"].ToString() == dtHPS.Rows[k]["City"].ToString() && dtEG.Rows[j]["City"].ToString()== dtHPS.Rows[k]["City"].ToString()) {
obj.City = dtPM.Rows[i]["City"].ToString();
obj.KHValue = dtPM.Rows[i]["KHValue"].ToString();
obj.SofarAvg = dtPM.Rows[i]["SofarAvg"].ToString();
obj.OverDayAvg = dtPM.Rows[i]["OverDayAvg"].ToString();
obj.OverDayTq = dtPM.Rows[i]["OverDayTq"].ToString();
obj.EGKHValue = dtEG.Rows[j]["KHValue"].ToString();
obj.EGSofarAvg = dtEG.Rows[j]["SofarAvg"].ToString();
obj.EGOverDayAvg = dtEG.Rows[j]["OverDayAvg"].ToString();
obj.EGOverDayTq = dtEG.Rows[j]["OverDayTq"].ToString();
obj.EGSyDayRate = dtEG.Rows[j]["SyDayRate"].ToString();
obj.EGLastYearDayRate = dtEG.Rows[j]["LastYearDayRate"].ToString();
obj.HPSKHValue = dtHPS.Rows[k]["KHValue"].ToString();
obj.HPSSofarAvg = dtHPS.Rows[k]["SofarAvg"].ToString();
obj.HPSOverDayAvg = dtHPS.Rows[k]["OverDayAvg"].ToString();
obj.HPSOverDayTq = dtHPS.Rows[k]["OverDayTq"].ToString();
obj.SortId = dtPM.Rows[i]["SortId"].ToString();
}
continue;
}
}
list.Add(obj);
}
return JsonConvert.SerializeObject(list);
}