static void Main(string[] args) { using (FileStream stream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp.xlsx"), FileMode.Open), stream2 = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp2.xlsx"), FileMode.Open) ) { using (XmlDataTable <Person> table = XmlDataTable <Person> .LoadFrom(stream), table2 = XmlDataTable <Person> .LoadFrom(stream2)) { var entries = table.Get(); table.Merge(table2.Get().Select(t => t.Data).ToList(), EqualIf: (p1, p2) => { return(p1.SequenceNo > 0 && p2.SequenceNo > 0 && p1.SequenceNo == p2.SequenceNo); }, LatestIf: (p1, p2) => { return(!default(DateTime).Equals(p1)); }); table.Save(); } } }
//===================================================================== // FunctionName : ConvertDataGridViewToDataTable /// <summary> /// 将DataGridView数据转换成DataTable数据 /// </summary> //===================================================================== public void ConvertDataGridViewToDataTable() { foreach (DataGridViewColumn dgvcTemp in XmlDataGridView.Columns) { if (dgvcTemp.ValueType == null) { XmlDataTable.Columns.Add(dgvcTemp.Name); } else { XmlDataTable.Columns.Add(dgvcTemp.Name, dgvcTemp.ValueType); } } foreach (DataGridViewRow dgvrTemp in XmlDataGridView.Rows) { DataRow drTemp = XmlDataTable.NewRow(); foreach (DataGridViewCell dgvcTemp in dgvrTemp.Cells) { if (dgvcTemp.Value == null) { if (dgvcTemp.ValueType == System.Type.GetType("System.Boolean")) { drTemp[dgvcTemp.ColumnIndex] = "false"; } else { drTemp[dgvcTemp.ColumnIndex] = DBNull.Value; } } else { drTemp[dgvcTemp.ColumnIndex] = dgvcTemp.Value; } } XmlDataTable.Rows.Add(drTemp); } }
//===================================================================== // FunctionName : SaveDataTableToXml /// <summary> /// 将DataTable数据保存为XML文件 /// </summary> //===================================================================== public void SaveDataTableToXml() { ConvertDataGridViewToDataTable(); XmlDataTable.WriteXml(FileName, XmlWriteMode.WriteSchema); }
//===================================================================== // FunctionName : LoadXmlToDataTable /// <summary> /// 将XML文件读取为DataTable数据 /// </summary> //===================================================================== public void LoadXmlToDataTable() { XmlDataTable.ReadXml(FileName); ConvertDataTableToDataGridView(); }