List <string>を注文するにはどうすればよいですか?


121

私はこれを持っていますList<string>

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

アルファベット順で昇順で注文するにはどうすればよいですか?




ソート方法。uも下降が必要な場合は、Reverseと組み合わせて
Nathan Q

回答:


238
ListaServizi = ListaServizi.OrderBy(q => q).ToList();

@ServyがOrderByを使用する理由の1つは、ListaServiziがとして宣言されてIList<string>いるため、Sortメソッドがないことです。このコードは、でより多くの賛成票を受け取った回答とは異なり、実際には記述どおりに機能しListaServizi.Sort()ます。これが私が選択する解決策であると言っているわけではありませんが、私が実際に答えを投稿したとき、これが唯一の正しい答えでした。
phoog 2012

選択したソリューションではない場合、なぜそれを回答として提案するのですか?答えとして提案することを提案します。それがIListからListにタイプを変更することを意味するので.Sort、それを呼び出すことができるなら、なぜそれをしないのですか?
サービー2012

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

1
@AurélienRibon問題ステートメントについては、変数の型を変更できないことは何も言われていません。要件は、具体的にはをソートすることListです。そして、この回答に関連するコストは重要であり、また不必要です。それは文字通り何もません。これはコードを複雑にし、簡潔さを欠き、効率も低下します。文字通り、ここには欠点しかありません。
サービー2014


12

他の回答は正解Sortですが、保管場所がと入力されているという事実を見落としているようですIList<stringSortインターフェースの一部ではありません。

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>、コメントを残してください。ソートするための提案を1つまたは2つ追加します。


5
ListaServizi.Sort();

あなたのためにそれをします。文字列のリストがあれば十分簡単です。オブジェクトをソートする場合は、少し賢い必要があります。


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

3
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));
}

出力:Abdi 3 Alex 2 Bob 4

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.