4

私のアプリケーションでは、400 個を超える画鋲を含むリストを作成しています。UI ブロックを回避するために、Rx フレームワークと共に次の用語を使用しています。

var observer = localStoreCollection.ToObservable();
observer.Subscribe(StoresOnNext, StoresOnError, StoresOnCompleted);

OnNext では、この画鋲を 1 つずつバインディング リストに追加します。マップに加えて、同じコレクションのリストを作成しています。したがって、最も近い場所に基づいてこのリストを並べ替える必要があります。だから私の質問は、リストを再割り当てせずにこのコレクションをソートする方法です。(参照による呼び出しに似たようなもの)。

注意: また、距離の割り当ては OnNext メソッド内で行われます。

4

1 に答える 1

1

あなたが何を求めているのかわからないので、ここで暗闇の中で撮影...

編集...NBで質問をもう一度読んでください。一般的に言えば、関数型プログラミングを使用してデータオブジェクトに値を割り当てるという概念に対して強くお勧めします。代わりに、プッシュピンと距離プロパティを含む新しいオブジェクトを作成するか、マップを使用して距離情報を一種の「拡張プロパティ」として保存することをお勧めします。

var observer = localStoreCollection.ToObservable();
observer.Subscribe(StoresOnNext, StoresOnError, StoresOnCompleted);
var closestObservable = observer.Min(Comparer<PushPin>.Create((a, b) => Double.Comparer(Distance(a), Distance(b)));

またはおそらく

var observer = localStoreCollection.ToObservable();
observer.Subscribe(StoresOnNext, StoresOnError, StoresOnCompleted);
var distanceMap = new ConcurrentDictionary<PushPin, double>();
var closestObservable = observer.Min(Comparer<PushPin>.Create((a, b) => Double.Comparer(distanceMap.GetOrAdd(a, Distance), distanceMap.GetOrAdd(b, Distance)));

Distance(PushPin)関数が高価な場合。

于 2013-06-21T02:25:54.660 に答える