gpt4 book ai didi

c# - ObservableCollection 的排序值(响应式扩展)

转载 作者:行者123 更新时间:2023-11-30 12:47:19 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

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) 函数开销很大。

关于c# - ObservableCollection 的排序值(响应式扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com