4

在我的应用程序中,我有一个包含 400 多个图钉的列表。为了避免 UI 块,我将以下术语与 Rx 框架一起使用。

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

在 OnNext 上,我将把这个图钉一一添加到我的绑定列表中。连同地图,我正在使用相同的集合填充列表。所以我需要根据最近的位置对这个列表进行排序。所以我的问题是如何在不重新分配列表的情况下对这个集合进行排序。(类似于引用调用的东西)。

注意:距离的分配也是在 OnNext 方法中进行的。

4

1 回答 1

1

在这里拍摄黑暗,因为我不知道你在问什么......

编辑...只需用 NB 再次阅读您的问题。现在一般来说,我强烈建议不要使用函数式编程来为数据对象赋值。相反,我建议您创建一个包含 PushPin 和距离属性的新对象,或者使用地图将距离信息存储为一种“扩展属性”。

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 回答