复制列表中的更改

Mor*_*unz 7 c# diff list inotifycollectionchanged array-difference

想象一下,我有一个项目列表:

 - A
 - B
 - C

现在从某个地方,服务器告诉我的应用程序元素B已被删除,但它只提供整个新列表,而不是确切的更改细节.由于WinRT会动态ListView添加,删除和移动项目中的项目,我宁愿不刷新支持列表并调用INotifyCollectionChangedReset- -event,因为这会使每个项目看起来都变得粗糙和粗糙.相反,我想计算将本地列表转换为从服务器获取的列表所需的步骤.(有点像levenshtein距离,不是步数而是步数本身)

例如:

 1. Delete element B
 2. Add new element D to position 3

我该怎么办?

编辑:在我的情况下,订单很重要.

Mor*_*unz 3

根据 @MihaiCaracostea 建议的页面标题,我能够找到一个适用于任何IList<T>. yield当您枚举更改时,它甚至用于延迟计算差异。

\n\n

这篇文章可以在这里找到,实际的源代码(如果你不想阅读它是如何完成的)在这里

\n\n

但请注意,该算法的运行时间为 O(n\xc2\xb2)。该领域当然还有改进的空间。

\n