我有一本字典,它的關鍵字是一個字符串,並且該值是一個對象列表。我想根據2個因素對列表的大小和對象ID進行排序。值被排序,因此列表中的第一個元素始終是最低的ID。基於2個因素對字典進行排序
到目前爲止,我設法使用order by來按列表中元素的數量對它進行排序,但現在我很難根據其他因素進行排序。
例:字典X包含當前鍵/值
["A",{2,4,5,6}]
["B",{6}]
["C",{1}]
["D",{0,1}]
["E",{0,99,88,66}]
排序應該是
["E",{0,99,88,66}]
["A",{2,4,5,6}]
["D",{0,1}]
["C",{1}]
["B",{6}]
這裏後我有什麼:
Public MyObject{
public Int Id{ get; set;}
}
var dictionary = new Dictionary<string, List<MyObject>>();
var dictionarySortedByCount = dictionary.OrderBy(x => x.Value.Count).Reverse().ToDictionary(x => x.Key, x => x.Value);
任何幫助,將不勝感激。
不要使用'Dictionary'進行排序,因爲字典的順序沒有排序。它針對查找鍵進行了優化。請將其存儲在「List」中。 –
在OrderBy中,你可以使用任何你喜歡的邏輯,所以你可以把一個IComparable值的方法。但是,正如Jeroen提到的那樣,您可以通過將其放回Dictionary來銷燬您的訂單。這個類總是像現實生活字典一樣排序(因此它的名字) –
爲什麼它會破壞字典的順序?我的聲明不會在那裏創建每個關鍵字按列表大小排序的新字典嗎? – ZZZ