Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Xamarin Android-排序iBeacon iCollection导致异常_Android_Sorting_Xamarin_Ibeacon_Icollection - Fatal编程技术网

Xamarin Android-排序iBeacon iCollection导致异常

Xamarin Android-排序iBeacon iCollection导致异常,android,sorting,xamarin,ibeacon,icollection,Android,Sorting,Xamarin,Ibeacon,Icollection,我试图对iBeacon对象的iCollection进行排序,但代码一运行就会抛出异常。我试图运行的代码如下所示。它在没有任何排序或排序的情况下运行良好,但我需要能够根据接近度对集合进行排序,如图所示(最低接近度优先,即接近度等于1): 例外情况如下: [mono] Unhandled Exception: [mono] System.ArgumentException: 'jmethod' must not be IntPtr.Zero. [mono] Parameter name: jmeth

我试图对iBeacon对象的iCollection进行排序,但代码一运行就会抛出异常。我试图运行的代码如下所示。它在没有任何排序或排序的情况下运行良好,但我需要能够根据接近度对集合进行排序,如图所示(最低接近度优先,即接近度等于1):

例外情况如下:

[mono] Unhandled Exception:
[mono] System.ArgumentException: 'jmethod' must not be IntPtr.Zero.
[mono] Parameter name: jmethod
[mono]   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod) [0x00000] in <filename unknown>:0 
[mono]   at Android.Runtime.JavaCollection`1[RadiusNetworks.IBeaconAndroid.IBeacon].CopyTo (RadiusNetworks.IBeaconAndroid.IBeacon[] array, Int32 array_index) [0x00000] in <filename unknown>:0 
[mono]   at System.Linq.Enumerable.ToArray[IBeacon] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 
[mono]   at System.Linq.QuickSort`1[RadiusNetworks.IBeaconAndroid.IBeacon]..ctor (IEnumerable`1 source, System.Linq.SortContext`1 context) [0x00000] in <filename unknown>:0 
[mono]   at System.Linq.QuickSort`1+<Sort>c__Iterator0[RadiusNetworks.IBeaconAndroid.IBeacon].MoveNext () [0x00000] in <filename unknown>:0 
[mono]未处理的异常:
[mono]System.ArgumentException:“jmethod”不能为IntPtr.Zero。
[mono]参数名称:jmethod
[mono]位于Android.Runtime.JNIEnv.CallObjectMethod(IntPtr jobject,IntPtr jmethod)[0x00000]中:0
Android.Runtime.JavaCollection`1[RadiusNetworks.IBeaconAndroid.IBeacon].CopyTo(RadiusNetworks.IBeaconAndroid.IBeacon[]数组,Int32数组_索引)[0x00000]位于:0
[mono]位于System.Linq.Enumerable.ToArray[IBeacon](IEnumerable`1源)[0x00000]中:0
[mono]位于System.Linq.QuickSort`1[RadiunSetworks.IBeaconAndroid.IBeacon]…ctor(IEnumerable`1源,System.Linq.SortContext`1上下文)[0x00000]位于:0
[mono]在System.Linq.QuickSort`1+c_u迭代器0[RadiunSetworks.IBeaconAndroid.IBeacon].MoveNext()[0x00000]中:0

你知道我怎样才能正确地订购这件收藏品吗?

这对你应该有用。让我知道进展如何

var allBeacons = new List<Beacon>();

foreach(var b in e.Beacons)
{
    allBeacons.Add(b);
}

var orderedBeacons = allBeacons.OrderBy(b => b.Proximity);
var allBeacons=new List();
foreach(e.信标中的变量b)
{
所有信标。添加(b);
}
var orderedBeacons=allBeacons.OrderBy(b=>b.approxity);

我在AltBeacon库中看到了同样的问题。我认为这与从JavaCollection到.NETICollection的类型转换有关,但我仍在寻找,我得到了同样的结果。很奇怪。要么是Xamarin的bug,要么是AltBeacon库中的种族状况。谢谢Chris。好东西,完美!
var allBeacons = new List<Beacon>();

foreach(var b in e.Beacons)
{
    allBeacons.Add(b);
}

var orderedBeacons = allBeacons.OrderBy(b => b.Proximity);