1

我有两张表,一张有 450 行,另一张是排序表,它的行数要少得多。我希望能够使用左连接对表的集合进行排序,并且我希望第二个表中的项目按名为“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 行,但我的顺序不正确。我希望顺序在第二个表中的 SortOrder 值中排在第一位,如果它为空,则将其设置为 Int32.MaxValue 以便排在最后。因此,如果我在第一个表中有 1 个项目,第二个表中的 SortOrder 值为 1,它应该是列表中的第一个,但它不是。但是,它是按标题排序的。

我在这里做错了什么?

4

1 回答 1

3

将您的第二个更改OrderByThenBy.

于 2012-06-19T15:21:03.727 回答