2017-02-10 16 views
0

2つの配列(通常はキー&の値)を最適な方法でソートしようとしています。標準のC#では、Array.Sort(Array、Array)メソッドはうまく機能しますが、そのようなメソッドはありません。PCLのArray.Sort(array、array)に相当するもの

はより明確に、このコードは、クロスプラットフォームのPCLビルド内の標準的なC#で可能ですが、ありません。

 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 

をそして私が見るすべては、あなたがArray.Sort()を使用することができますNo array sort

+1

plcを使用しても、Array.Sort(keys、values);を使用できる必要があります。システムネームスペースを使用しています –

+0

.NET Prtableプロファイルを調べましたか?おそらくあなたが実際に必要とするもののために余りにも制限されていて、あなたのPCLからそのメソッドを削除するかもしれません –

+1

可能であれば、私は新しい開発のためにPCLをしないことをお勧めします。 [PCLとの互換性に必要なものと一致するようにプロファイルをターゲットにする] .NET Coreライブラリに切り替える(http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html) –

答えて

1

ですPLCプロジェクトを使用している場合でも、次のものを追加してください。

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

これは動作しません。 https://msdn.microsoft.com/en-us/library/85y6y2d3(v=vs.110).aspx#Version情報に従って、このソート方法は移植可能なクラスライブラリでは利用できません。 PCLに使用できるものはありますか? – Slvrfn

+0

この答えがなぜ受け入れられるのか分かりませんが、Array.Sortのこの特定のオーバーロード(2配列を取る)はPCLプロジェクトでは利用できません。 – ingham

関連する問題