我有两个表,一个有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值排在第一位,如果它是null,那么将它设置为Int32.MaxValue,这样它就会排在最后。因此,如果我在第一个表中有1个项目,并且第二个表中的SortOrder的值为1,那么它应该是列表中的第一个项目,但它不是。
我在这里做错了什么?
发布于 2012-06-19 23:21:04
将第二个OrderBy更改为ThenBy。
https://stackoverflow.com/questions/11104097
复制相似问题