繁体   English   中英

Linq To SQL DefaultIfEmpty

[英]Linq To SQL DefaultIfEmpty

我有两个表,一个有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,那么它应该是列表中的第一个,但事实并非如此。 然而,它按标题排序。

我在这做错了什么?

将您的第二个OrderBy更改为ThenBy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM