GroupBy はソートしない。そりゃそうなんだけど、なぜかソートすると思ってた。
//データ構造。
class GTest
{
	public int c1;
	public int c2;
}
//テストデータの集合。
List<GTest> r = new List<GTest> ();
r.Add ( new GTest ()
{
	c1 = 3,
	c2 = 1,
} );
r.Add ( new GTest ()
{
	c1 = 3,
	c2 = 2,
} );
r.Add ( new GTest ()
{
	c1 = 1,
	c2 = 1,
} );
r.Add ( new GTest ()
{
	c1 = 2,
	c2 = 1,
} );
r.Add ( new GTest ()
{
	c1 = 1,
	c2 = 2,
} );
r.Add ( new GTest ()
{
	c1 = 2,
	c2 = 2,
} );
Linq.
//GroupBy
var t1 = r.GroupBy ( x => x.c1 );
foreach ( var t in t1 )
{
	Console.WriteLine ( ">> GB:{0}", t.Key );
}
//GroupBy + OrderBy 
var t2 = r.GroupBy ( x => x.c1 ).OrderBy ( x => x.Key );
foreach ( var t in t2 )
{
	Console.WriteLine ( ">> GO:{0}", t.Key );
}
Result:
//GroupBy - 格納した順序。
>> GB:3
>> GB:1
>> GB:2

//GroupBy + OrderBy - ソートした順序。
>> GO:1
>> GO:2
>> GO:3