簡體   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