根据 2 个因素对字典进行排序

Sort dictionary based on 2 factors

我有一本字典,它的键是一个字符串,值是一个对象列表。我想根据 2 个因素对其键进行排序,即列表的大小和对象 ID。这些值已排序,因此列表中的第一个元素始终是最小的 id。

到目前为止,我设法使用 order by 按列表中元素的数量对其进行排序,但现在我很难根据其他因素进行排序。

示例:字典 X 包含当前 keys/values

["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);

如有任何帮助,我们将不胜感激。

您是否尝试过在第一个订单条件之后添加另一个订单条件,如下所示?

var dictionarySortedByCount = dictionary
        .OrderByDescending(x => x.Value.Count)
        .ThenBy(x => x.Value[0].ObjectId)
        .ToDictionary(x => x.Key, x => x.Value);