我在 C# 中创建了一个字典,每个键有多个值:
编辑:根据评论的建议,结构已得到纠正:
var exampleDictionary = new Dictionary<string, Dictionary<string, double>>()
{
{
"Apple",
new Dictionary<string, double>
{
{ "Weight", 82 },
{"Size", 10},
{ "Number", 32 }
}
},
{
"Orange",
new Dictionary<string, double>
{
{ "Weight", 73 },
{"Size", 9},
{ "Number", 63 }
}
},
};
Run Code Online (Sandbox Code Playgroud)
有没有办法可以按特定值对字典键进行排序。例如,如果我想按降序按“数字”值排序,那么字典将先有橙色,然后是苹果。
使用 LINQ 最容易做到这一点:
exampleDictionary.OrderByDescending(e => e.Value["Number"])
Run Code Online (Sandbox Code Playgroud)
如果不能保证“Number”条目存在,最好使用 TryGetValue 而不是[..]避免 KeyNotFoundException:
exampleDictionary.OrderByDescending(e => e.Value.TryGetValue("Number", out var n) ? n : 0)
Run Code Online (Sandbox Code Playgroud)
(这将对没有数字的条目进行排序,就像数字是 0 一样)。
正如一些评论指出的那样:OrderByDescending 不会就地对字典进行排序(这是不可能的),而是返回一个有序的可枚举,因此它可以用作例如:
foreach (var entry in exampleDictionary.OrderByDescending(e => e.Value["Number"]))
{
Console.WriteLine(entry.Key);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |