2016-04-17 18 views
-2

2つのリストをマージしてソートする必要がありますが、新しいマージされたリストをソートしようとするとエラーの意味を理解できません。 "暗黙的に型 'void'を 'System.Collections.Generic.List'に変換することはできません。"これはresult.Sort();のエラーです。2つのリストをマージし、その後にマージしたリストをソートする

  List<int> listOne = new List<int> { 1, 3, 5, 7, 9 }; 
     List<int> listTwo = new List<int> { 2, 4, 6, 8, 10 }; 
     List<int> result = listOne.Union(listTwo).ToList(); 

     List<int> sorted = result.Sort(); 

     foreach (var i in sorted) { 
      Console.WriteLine(i); 
     } 
     Console.ReadLine(); 
+0

'Sort()'メソッドは 'List'sのメソッドです。何も返されません。上記のリストにのみ影響します。パフォーマンスを向上させるには、これが最善の方法です。 –

+0

[Enumerable.OrderByメソッド](https://msdn.microsoft.com/en-us/library/system.linq.enumerable.orderby%28v=vs.100%29.aspx)が必要なようです。 –

答えて

1

ソート関数であるべきでは上と呼ばれる関数は、(ソートリストを返しますが、リストを変更しない)のリストを変更する機能です。 したがって、あなたの例では:

result.Sort(); 

foreach (var i in result) 
{ 
    Console.WriteLine(i); 
} 

Console.ReadLine(); 
+0

ああ、そのように説明されたことを聞いた後に100%感覚を増します。なぜ私は最初の場所で最終結果を表示するために新しいリストを作成しようとしていたのかわかりません、ありがとう! – user3485895

3

問題は、result.Sort()メソッドは何も返しません。既存のresultリストをソートするだけです。 ので、コードが

result.Sort(); 

foreach (var i in result) 
{ 
    Console.WriteLine(i); 
} 
関連する問題