2012-04-18 6 views
80

私はこのリストを持っている:私は原因それ内部の文字列にそれを注文することができますどのようにリスト<string>はどのように注文できますか?

IList<string> ListaServizi = new List<string>() { }; 

?アルファベットと昇順。

+3

あなたは '.Sort' http://msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vsを試してみました。 90%29.aspx? – Matthew

+0

ソート方法。逆順と組み合わせても、降順が必要な場合 –

+0

ここをクリックhttp://www.dotnetperls.com/sort-list –

答えて

155
ListaServizi = ListaServizi.OrderBy(q => q).ToList(); 
+0

@Servy OrderByを使用する理由の1つは、ListaServiziには、IList '。このコードは、ListaServizi.Sort()でより多くのアップフォースを受け取った回答とは異なり、実際には書かれたとおりに動作します。私はこれが私が選択した解決策であると言っているわけではありませんが、これは私の答えを掲示したときに唯一正しい答えでした。 – phoog

+0

あなたが選ぶべき解決策でないなら、それをなぜ答えとして提案するのですか?答えとして何をするかを提案してください。これは型をIListからListに変更することを意味するので、 '.Sort'を呼び出すことができます。 – Servy

+1

@Servy彼は問題の仕様を変更せずに問題を解決しました。これは、これまでのところ好ましい方法です。さらに、問題ステートメントは実装パターンに対するインターフェイスを使用します。これは非常に重要です。リストタイプへの変更を提案するのは正しいですが、問題を変更する必要があるため、正しい答えの後に代替の回答として行う必要があります。 –

31

あなたはあなたのためにそれを行うだろうSort

List<string> ListaServizi = new List<string>() { }; 
ListaServizi.Sort(); 
4
ListaServizi.Sort(); 

を使用することができます。それはストリングのリストで十分です。オブジェクトをソートする場合は、少し面白くする必要があります。

+1

'ListaServizi'は' IList 'です。インターフェースには 'Sort'メソッドがありません。少なくともここにキャストが必要です。 – phoog

7

他の回答はSortを示唆していますが、記憶場所がIList<stringと入力されているという事実を見逃しているようです。 Sortはインターフェイスの一部ではありません。

ListaServiziには常にList<string>が含まれていることがわかっている場合は、宣言された型を変更するか、キャストを使用できます。あなたがわからない場合、あなたはタイプをテストすることができます。

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType())) 
    ((List<string>)ListaServizi).Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

おそらくもっと慣用:

List<string> typeCheck = ListaServizi as List<string>; 
if (typeCheck != null) 
    typeCheck.Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

あなたはListaServiziが時々IList<string>の異なる実装を保持することがわかっている場合は、コメントを残して、私はそれをソートするための提案を2つ追加します。

2
 List<string> myCollection = new List<string>() 
     { 
      "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi" 
     }; 

     myCollection.Sort(); 
     foreach (var name in myCollection.Distinct()) 
     { 
      Console.WriteLine(name + " " + myCollection.Count(x=> x == name)); 
     } 

出力: アブディ3 アレックス2 ボブ4