動物の (順序付けられた) シーケンスがあるとします。
鷲 象 タランチュラ テラピン 虎
そして、最初の文字でグループ化します:
Animals.GroupBy(animal => animal.First())
結果のシーケンスの sの要素はIGrouping
、入力シーケンスと同じ順序になりますか?
動物の (順序付けられた) シーケンスがあるとします。
鷲 象 タランチュラ テラピン 虎
そして、最初の文字でグループ化します:
Animals.GroupBy(animal => animal.First())
結果のシーケンスの sの要素はIGrouping
、入力シーケンスと同じ順序になりますか?
はい、次のようになります: GroupBy (MSDN)。
IGrouping<TKey, TElement> オブジェクトは、各 IGrouping<TKey, TElement> の最初のキーを生成した source 内の要素の順序に基づく順序で生成されます。グループ内の要素は、ソースに表示される順序で生成されます。
GroupByのMSDN ページからの引用:
オブジェクトは、
IGrouping<TKey, TElement>
それぞれの最初のキーを生成した source 内の要素の順序に基づいた順序で生成されますIGrouping<TKey, TElement>
。グループ内の要素は、ソースに表示される順序で生成されます。
したがって、あなたの例は次のようになります。
グループ1
- 鷲
- 象
グループ 2
- タランチュラ
- テラピン
- 虎
もちろん、それはIEnumerable<T>
実装にのみ適用されます。IQueryable<T>
実装にはそのような保証はありません。