2012-11-13 93 views
3

如何訂購一個List<Dictionary<String,object>>對象包含唯一字符串C#訂購列表<字典<串,對象>>

字典的結構如下

[name: mario] 
[surname: rossi] 
[address: xxxxxx] 
[age: 40] 

我想訂購的列表這些字典由「年齡」 可以幫助我嗎?

我已經試過:

myList.Select(x => x.OrderBy(y=>y.Value)) 

它給了我這個錯誤:值不是一個字符串(好吧,我跟他aggree,它是一個對象,我以某種方式投) 但更重要的是,我不能告訴其必須按年齡

+0

爲什麼你有一個'名單<詞典<字符串,對象>>'?你能改變嗎? –

+0

如果我理解正確,字典包含4個項目?還是說每個項目都有這4個屬性? – Oded

+0

您可以按年齡對每本詞典進行排序,但如果除非每本詞典僅包含具有相同年齡的對象,否則按順序排列該排列方式是沒有意義的。 –

回答

5
myList.Sort((x,y) => ((int)x["age"]).CompareTo((int)y["age"])); 

或類似命令「排序依據」的方法:

myList.Sort((x, y) => Comparer.Default.Compare(x["age"], y["age"])); 

不過!如果你使用了正確的類型而不是字典,它會容易得多。那麼這純粹是:

myList.Sort((x,y) => x.Age.CompareTo(y.Age)); 
5

你想沿着

var sorted = myList.OrderBy(dict => Convert.ToInt32(dict["age"])); 

我以前用過Convert.ToInt32防守,因爲有你正在使用其他的數據類型爲年齡小的機會線的東西,和鑄造(拆箱)到錯誤的類型會引發異常。

相關問題