2011-07-14 70 views
1

我有一個linq查詢,返回僱員名單和職位名稱。 我需要按職位對其進行排序,但首先在輸出列表中沒有任何員工。LINQ按問題排序

例排序:
- 驅動程序         列表{0}
- 話務員列表{71}
- 先導               列表{19}

駕駛員首先是因爲它在列表中沒有任何內容,然後按標題排序。

我只是好奇你認爲什麼是我最好的選擇來實現它?

感謝

+1

目前尚不清楚你所說的「名單」的意思 - 這是下屬對每個員工的名單? –

回答

6

喜歡的東西:

var query = employees.OrderBy(x => x.Subordinates.Any() ? 1 : 0) 
        .ThenBy(x => x.JobTitle); 

你也可以使用一個事實,即false各種各樣早於true

var query = employees.OrderBy(x => !x.Subordinates.Any()) 
        .ThenBy(x => x.JobTitle); 

...但是這是一個有點不太明顯, IMO。

+0

完美tx,我的方法在 – mateoc

0

喜歡的東西:

Jobs.OrderBy(j => j.Eployees.Count()).ThenBy(j => j.Name); 
+1

之前有點矯枉過正不,因爲那會讓「Pilot」成爲第二。這不是計數本身,它只是「計數非零」。 –

+0

沒錯。我在看到你的答案後才完全理解OP的全部意圖。在那個階段,將我的更新與您的相同似乎很愚蠢。 – Variant