我有一个字典,它的键是一个字符串,值是一个对象列表。我想根据2个因素,列表的大小和对象Id对其键进行排序。这些值已排序,因此列表中的第一个元素始终是最低的id。
到目前为止,我设法使用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);
任何帮助都将不胜感激。
答案 0 :(得分:2)
您是否尝试在第一个订单条件之后添加另一个订单条件,如下所示?
var dictionarySortedByCount = dictionary
.OrderByDescending(x => x.Value.Count)
.ThenBy(x => x.Value[0].ObjectId)
.ToDictionary(x => x.Key, x => x.Value);