C#学习教程:比较数据表问题是每次检查新记录时窗口都会闪烁,我想解决这个问题。我正在尝试将旧数据表与新数据表进行比较,并且仅在它们不同时才进行刷新。有谁知道这种情况的最佳做法是什么?我尝试按照以下方式进行操作,但它不起作用:privateboolGetBelongingMessages(){boolresult=false;DataTabledtTemp=OleDbWorks.GetBelongingMessages(currentCallID);如果(dtTemp!=dtMessages){dtMessages=dtTemp;结果=真;}else{结果=假;}返回结果;首先,重要的是要意识到您是在比较代码中对数据表的引用,而不是数据表的内容。为了确定两个数据表是否具有相同的内容,您将必须遍历所有行和列以查看它们是否相等://Thisassumesthedatatableshavethesameschema...publicboolDatatablesAreSame(DataTablet1,DataTablet2){如果(t1.Rows.Count!=t2.Rows.Count)返回false;foreach(DataColumndcint1.Columns){for(inti=0;i我一直在尝试找到一种方法来进行DataTable比较一段时间后最终编写了我自己的函数,这就是我得到的:booltablesAreIdentical=true;//遍历第一个表foreach(DataRowrowinfirstTable.Rows){foundIdenticalRow=false;//遍历tempTable以找到相同的行foreach(DataRowtempRowintempTable.Rows){allFieldsAreIdentical=true;//比较字段,如果有任何字段不同,则移至tempTable中的下一行for(inti=0;i与DaveMarkle的解决方案相比,我具有相同记录但顺序不同的两个表的过程。希望这有助于绊倒的人关于这个主题。您必须转换对象t1.Rows[i][dc.ColumnName]和t1.Rows[i][dc.ColumnName]否则语句t1.Rows[i][dc.ColumnName]!=t2.Rows[i][dc.ColumnName]始终为真。我这样修改了代码:for(inti=0;i它有效,但这不是一个优雅的解决方案。publicBooleanCompareDataTables(DataTabletable1,DataTabletable2){boolflag=true;DataRow[]row3=table2.Select();inti=0;//row3.Length;如果(table1.Rows.Count==table2.Rows.Count){foreach(DataRowrow1intable1.Rows){if(!row1.ItemArray.SequenceEqual(row3[i].ItemArray)){flag=false;休息;我++;}}else{flag=false;}返回标志;}//这里这个函数将给出布尔值作为结果。如果两者相同,则返回true;如果它们不同,则返回false。并且需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
