按嵌套字典值排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按嵌套字典值排序?相关的知识,希望对你有一定的参考价值。
var userInformation = new Dictionary<string, Dictionary<string, int>>();
我需要一个等于这个的新词典,但首先按键然后按值的值排序。我试过了:
var resultInformation = userInformation.OrderBy(k => k.Key).ThenBy(v => v.Value.OrderByDescending(x => x.Value));
我尝试了其他一些方法但没有效果。
答案
字典没有排序,但您可以轻松生成字典中的项目列表/集合,如下所示:
var resultInformation = from outer in userInformation
from inner in outer.Value
let data = new { Outer = outer.Key, Inner = inner.Key, Value = inner.Value }
orderby data.Outer, data.Inner, data.Value
select data;
或者查询语法等价:
var resultInformation = userInformation
.SelectMany(i => i.Value, (key, inner) => new { Outer = key, Inner = inner.Key, Value = inner.Value})
.OrderBy(e => e.Outer)
.ThenBy(e => e.Inner)
.ThenBy(e => e.Value);
更新:根据您的澄清评论,我认为您真正想要的是更像这样的东西:
var resultInformation =
from student in userInformation
orderby student.Key
select new
{
studentId = student.Key,
courses =
from courseScore in student.Value
orderby courseScore.Value descending
select new {
course = courseScore.Key,
score = courseScore.Value
}
};
以上是关于按嵌套字典值排序?的主要内容,如果未能解决你的问题,请参考以下文章
在Python中按值对嵌套字典进行排序,并按另一个值对余数进行排序