我有一個包含另一個字典值 像這樣如何排序包含字典的字典?
Dictionary<string, Dictionary<double,double>>
現在我想通過內部字典的價值 我怎麼能做到這一點對它進行排序的字典?
我有一個包含另一個字典值 像這樣如何排序包含字典的字典?
Dictionary<string, Dictionary<double,double>>
現在我想通過內部字典的價值 我怎麼能做到這一點對它進行排序的字典?
從您的評論的外觀
抱歉,我不是C#專家,你會建議的方式來存儲3個值作爲一個項目?
我建議創建一個類和排序像這樣
public class MyClass
{
public string StringProperty {get;set;}
public int FirstDoubleProperty {get;set;}
public int SecondDoubleProperty {get;set;}
}
然後創建一個這樣
List<MyClass> MyClasscol = new List<MyClass>();
MyClass mc = new MyClass();
mc.StringProperty = "User1225072";
mc.FirstDoubleProperty = 5;
mc.SecondDoubleProperty = 6;
MyClasscol.Add(mc);
mc = new MyClass();
// and So on
集合,然後排序這樣
var newsortedcollection = MyClasscol.OrderBy(x => x.FirstDoubleProperty);
非常感謝你,這個作品很棒 – user1225072
假設你現在正試圖弄清楚如何存儲和ord呃具有多個屬性的對象的集合,那麼你有幾個選擇。 Nikhil Agrawal's answer是一個很好的解決方案,但有時您可能不需要/想爲此創建自定義類。對於這些情況(最好當你的代碼是私人的,而不是某些API的一部分),那麼下面的替代方案可能是一個選項。
KeyValuePairs
根據您的需求,並使用字典原來的帖子,好像不是字典詞典(多層),你可能想keyvaluepairs(平)的字典。
// using keyvaluepair
var keyValueDict = new Dictionary<string, KeyValuePair<double, double>>();
keyValueDict.Add("string", new KeyValuePair<double, double>(5.8, 7.4));
var sortedKeyValues = keyValueDict.OrderBy(x => x.Value.Key);
元組
到不那麼愉快KeyValuePair另一種方法是在.NET 4引入的元組中的元組是一個通用類,它允許你存儲類型的屬性值,而無需創建自己的自定義類。值得注意的是,有多達8個屬性的元組實現。
// using tuple
var tupleList = new List<Tuple<string, double, double>>();
tupleList.Add(new Tuple<string, double, double>("string", 5.8, 7.4));
var sortedTuples = tupleList.OrderBy(x => x.Item2);
有一些良好的元組SO問題,如果你有興趣:
Is Using .NET 4.0 Tuples in my C# Code a Poor Design Decision?
Are EventArg classes needed now that we have generics
很棒的信息,謝謝 – user1225072
我還沒有去想象你爲什麼會需要這樣的數據結構,但都有些什麼您將持有的數據示例以及如何對數據進行排序?請記住,字典本身不可排序。 – gunr2171
字典的某些價值和你想要對它們進行排序的依據會有所幫助。 –
對不起,我不是c#的專家,你會建議一種方法來存儲3個值作爲一個項目? – user1225072