2012-05-27 14 views
3

以下詞典上的列表表示的鍵/值對的目的地城市ID和相關聯的該城市的過濾器的數量:排序基於另一個列表,接着在其自身上的屬性與LINQ

Dictionary<int, int> totalCityFilters 

這字典按降序排列的過濾器排序,這是我需要的方式。然後,我有航班的無序列表:

List<Flight> unsortedFlights 

每個Flight對象有一堆其中最相關的我的問題是DestinationIDFinalPrice屬性。我需要創建,他們是基於以下前提2航班排序的新列表:

  1. 清單應首先根據的totalCityFilters的順序進行排序,對字典的鍵的屬性DestinationID相匹配。航班列表可能會有多個航班,但具有相同的DestinationID(這不是主要關鍵)。
  2. 然後該列表應按FinalPrice屬性排序(升序)。

但是,第二種不能銷燬第一種。我的意思是,如果B.DestinationID首先出現在的totalCityFilters之上,便宜的航班(A)不能在更昂貴的航班(B)之上。

回答

8

如果我理解正確的話你:

var result = unsortedFlights 
      .OrderByDescending(f => totalCityFilters[f.DestinationID]) 
      .ThenBy(f => f.FinalPrice) 
      .ToList(); 

如果totalCityFilters值是你想先訂購數量。

+0

是的,就是這樣,這麼簡單,謝謝...我期待着一些大而混亂的事情。我不知道我們可以像這樣排序訪問字典(所有示例我都可以找到使用的連接),但我並沒有真正意識到「ThenBy」方法的存在。我編輯了你的答案,以反映我想要的降序順序:) –