1

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の場合、リストの最初にあるはずですが、そうではありません。ただし、タイトルでソートされています。

私はここで何が間違っているのですか?

4

1 に答える 1

3

OrderBy秒を に変更しますThenBy

于 2012-06-19T15:21:03.727 に答える