2017-02-10 4 views
0

Я пытаюсь сортировать два массива (обычно ключи & значений) оптимальным образом. В стандартном C# метод Array.Sort (Array, Array) хорошо работает для него, однако такого метода нет.Что такое эквивалент массива Array.Sort (массив, массив) в PCL

Более точно, этот код можно в стандартном C#, но не в кросс-платформенный PCL сборки:

 double[] keys = new double[100]; 
     object[] values = new object[100]; 
     Array.Sort(keys, values); 

есть ли такой метод доступен, или я должен использовать и экземпляр анонимного типа, как это?

 double[] keys = new double[100]; 
     object[] values = new object[100]; 
     var list = Enumerable.Range(0, keys.Length).Select(i => new { Val = keys[i], Obj = values[i] }).ToList(); 
     list.Sort((v1, v2) => v1.Val.CompareTo(v2.Val)); 
     for (int i = 0; i < values.Length; i++) 
     { 
      values[i] = list[i].Obj; 
      keys[i] = list[i].Val; 
     } 

EDIT: Некоторые люди говорят, что я должен увидеть эту функцию, однако, я использую это:

#region Assembly System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 
    // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile259\System.Runtime.dll 
    #endregion 

И все, что я вижу No array sort

+1

, даже если вы используете plc, вы должны иметь возможность использовать Array.Sort (ключи, значения) ;. он существует при использовании пространства имен System –

+0

Вы заглянули в свой профиль .NET Prtable? Возможно, он слишком ограничен для того, что вам действительно нужно, и удаляет метод из вашего PCL. –

+1

Если возможно, я бы рекомендовал не делать PCL для любой новой разработки. Переключитесь на библиотеку .NET Core [ориентируйте профиль в соответствии с тем, что вам нужно для совместимости с PCL] (http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html) –

ответ

1

Вы можете использовать Array.Sort(), Даже если вы используете PLC Проект, просто убедитесь, что вы добавили:

using System.Collections; 
using System.Collections.Generic; 
+0

Это не работает. Согласно https://msdn.microsoft.com/en-us/library/85y6y2d3(v=vs.110).aspx#Version Information, этот метод сортировки недоступен в портативных библиотеках классов. Есть ли какой-то эквивалент, который можно использовать в PCL? – Slvrfn

+0

Я не знаю, почему этот ответ принят, эта конкретная перегрузка Array.Sort (с двумя массивами) недоступна в проекте PCL. – ingham