2016-10-16 8 views
0

ソート後にリストの順序を維持したい。たとえば、ユーザは、リストに追加する2,4,5,1,0を入力します。リストで静的ソートされたメソッドを使用した後、この順序を維持するにはどうすればよいですか?私は、バブルソートメソッドを使用して、別のリスト変数で元のリストをコピーしようとしましたが、ソートされたメソッドの下にリストを渡した後、それは別のリスト変数にコピーされたと考えても元のリストをソートします。C#でソートして元のリストの順序を維持する

とにかくこの周辺にはありますか?

private List<int> sortedList(List<int> sortedGrads) 
    { 


     for (int i = 0; i < sortedGrads.Count - 1; i++) 
     { 
      for (int j = 0; j < sortedGrads.Count - 1 - i; j++) 
      { 
       if (sortedGrads[j] > sortedGrads[j + 1]) 
       { 
        int temp = sortedGrads[j]; 
        sortedGrads[j] = sortedGrads[j + 1]; 
        sortedGrads[j + 1] = temp; 
       } 
      } 
     } 
     return sortedGrads; 
    } 
+0

取り込むパラメータを変更しないでください。メソッド内に新しい空のリストを作成します。ソートした結果を新しいリストに入れ、新しいリストを返します。しかし、linq Orderbyを使うことができます。これはあなたのために行われます。 –

答えて

1

ソートされたリストを取得するには、LINQを使用して他の変数に結果を格納し、元のリストをそのまま維持します。

private List<int> sortedList(List<int> sortedGrads) 
     { 
      List<int> sortedElements = sortedGrads.OrderBy(x => x).ToList(); 

      //use any one from below 
      return sortedGrads; //returns the original list 
      return sortedElements; //returns the sorted list 
     } 
関連する問題