OrderByが効かない原因が分かった!Sortとの違いも【C#】

プログラミング
この記事は約2分で読めます。

ListとかDictionaryとかをソートしたい時、OrderByを使う方法があるけど、

どうしてだ・・・全然ソートできてねぇ・・・

あああああ、絶対ポンコツミス。

絶対絶対ポンコツミスなのは知ってるけど・・・

ググっても出てこねえええええええええええええええええええ!!!!!!!!

でもすごいいい記事を見つけたんだ!

OrderByとThenBy - IOrderedEnumerableの仕組み
LINQには要素を並び替える OrderBy と、OrderByで同じ大きさだった要素をその中でさらに並び替える ThenBy という拡張メソッドが用意されています。 var files = Directory.GetFiles(@"(中略)\OrderByTest") ...

OrderByの中身はどうなってんだ!っていう記事。

お陰様で解決できました、ありがとうございます。

OrderByが効かなかった間違った使い方

私がやってたミスはこんな感じ

おーーーーーーーーーーーーーーい駄目やんけーーーー(そりゃそうだ)

でも、Sortだと効く。

私の何がいけなかったか、お気づきでしょうか?

OrderByはIOrderedEnumerable<T>を返す

IOrderedEnumerable<T>は、IEnumerable<T>を継承したもの。

OrderByは、IOrderedEnumerable<T>を返すんだよね。

Sortの場合は、インスタンス自信をソートしてくれるけど、

OrderByの場合は、ソートしたものを、返す。

つまり、

はOK

OrderByの場合は

って、やらなきゃいけない。

ちなみに、ここでのsample2の型はIOrderedEnumerable<int>になってるよ。

上記のミスを正す場合は

ってやればいいけど、ここでエラーが!

sample.OrderBy()の返り値はIOrderedEnumerable<int>

List<int>のsampleには代入できないので、List型にキャストしてあげればOK

ってやってあげればオッケーだね!

タイトルとURLをコピーしました