Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ObservableCollection的排序值(被动扩展)_C#_Windows 8_System.reactive - Fatal编程技术网

C# ObservableCollection的排序值(被动扩展)

C# ObservableCollection的排序值(被动扩展),c#,windows-8,system.reactive,C#,Windows 8,System.reactive,在我的应用程序中,我有一个超过400个图钉的列表。为了避免UI阻塞,我将使用以下术语和Rx框架 var observer = localStoreCollection.ToObservable(); observer.Subscribe(StoresOnNext, StoresOnError, StoresOnCompleted); 在OnNext上,我将把这个图钉逐个添加到我的绑定列表中。与地图一起,我正在用相同的集合填充列表。所以我需要根据最近的位置对列表进行排序。所以我的问题是如何在不重

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

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


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

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

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

var observer=localStoreCollection.ToObservable();
订阅(StoresOnNext、StoresOnError、StoresOnCompleted);
var closestObservable=observer.Min(Comparer.Create((a,b)=>Double.Comparer(距离(a),距离(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)));
var observer=localStoreCollection.ToObservable();
订阅(StoresOnNext、StoresOnError、StoresOnCompleted);
var distanceMap=新的ConcurrentDictionary();
var closestObservable=observer.Min(Comparer.Create((a,b)=>Double.Comparer(distanceMap.GetOrAdd(a,Distance),distanceMap.GetOrAdd(b,Distance));

如果
距离(图钉)
功能很昂贵。

什么是
StoresOnNext
等?您是否只是试图用某个度量(距离)的最小值来观察对象?StoreNext将迭代localStoreCollection的每个值,因此在OnNext中,我将把该图钉添加到我的binding observabel集合中。我完全不知道这意味着什么。您是否可以包含其余代码。StoresNext是什么等等。。。
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)));