2つのテーブルがあります。1つは450行で、もう1つはそれよりもかなり少ないソートテーブルです。左結合を使用してテーブルのコレクションを並べ替えることができ、2番目のテーブルにあるアイテムを「SortOrder」というInt列で並べ替えることができます。そのようです:
var g_getFragments = (from c in context.Fragments
join fso in context.FragmentSortOrders
on c.ID equals fso.ID into sr
from x in sr.DefaultIfEmpty()
select new { c.ID_Section, c.ID, c.Title, c.IsManagementFragment, SortOrder = x.SortOrder ?? Int32.MaxValue})
.OrderBy(o => o.SortOrder)
.OrderBy(f => f.Title)
.ToList();
これにより、450行すべてが期待どおりに返されますが、私の順序は正しくありません。2番目のテーブルのSortOrder値で順序を最初にしたいのですが、nullの場合は、最後になるようにInt32.MaxValueに設定します。したがって、最初のテーブルに1つのアイテムがあり、2番目のテーブルのSortOrderの値が1の場合、リストの最初にあるはずですが、そうではありません。ただし、タイトルでソートされています。
私はここで何が間違っているのですか?