对ObservableCollection(响应式扩展)的值进行排序



在我的应用程序中,我有一个超过400个推针的列表。为了避免UI块,我在Rx框架中使用了以下术语:

var observer = localStoreCollection.ToObservable();
observer.Subscribe(StoresOnNext, StoresOnError, StoresOnCompleted);
在OnNext上,我会将这些图钉一个接一个地添加到我的绑定列表中。随着地图,我正在填充具有相同集合的列表。所以我需要根据最近的位置对列表进行排序。所以我的问题是如何在不重新分配列表的情况下对这个集合进行排序。(类似于引用调用)。

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

在黑暗中拍摄,因为我不知道你在问什么…

编辑……用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)函数很昂贵

相关内容

  • 没有找到相关文章

最新更新