7

アイテムのリストがあるとします。

- あ
 -B
 - C

どこかからサーバーが私のアプリケーションに要素Bが削除されたことを伝えますが、正確な変更の詳細ではなく、新しいリスト全体のみを提供します。WinRTListViewはアイテム内のアイテムの追加、削除、および移動を自動的にアニメーション化するため、バッキング リストを更新してINotifyCollectionChangedReset-- イベントを呼び出すことは避けたいと思います。代わりに、ローカル リストをサーバーから取得したリストに変換するために必要な手順を計算したいと考えています。(レーベンシュタイン距離のようなもので、歩数ではなく、歩数そのもの)

例えば:

1.要素Bを削除
 2. 新しい要素 D を位置 3 に追加します。

どうすればいいですか?

編集:私の場合、順序が重要です。

4

2 に答える 2

3

@MihaiCaracostea が提案したページのタイトルに基づいて、任意のIList<T>. yield変更を列挙しているときに、差分を遅延して計算するためにも使用されます。

記事はここにあり、実際のソース コード (その方法を読みたくない場合) はここにあります。

ただし、アルゴリズムは O(n²) 時間で実行されることに注意してください。その分野には確かに改善の余地があります。

于 2015-09-10T17:51:45.187 に答える