gpt4 book ai didi

C#/Linq - 排序 IDictionary

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:10 25 4
gpt4 key购买 nike

我正在使用 Firebase for Unity 来存储一些带有分数的用户。 Firebase 将我的用户列表返回为 IDictionary<string, object> Key在哪里是由 Firebase 和 Value 生成的一些 ID是另一个IDictionary<string, object>代表用户。

用户有一个 Key称为“分数”,我想按 Value 对所有用户进行排序排行榜的分数。

这或多或少是 JSON 格式的数据:

"users": {
"<userid>" : {
"name" : "John",
"score": 5
...
},
"<userid>" : {
"name" : "Pete",
"score" : 10
}
...
}

我将如何对用户列表进行排序?我假设我需要以某种方式使用 Linq,但我仍在努力掌握它的工作原理。

如果能提供一些帮助,我们将不胜感激。谢谢!

最佳答案

给定:

IDictionary<string, object> dict = new Dictionary<string, object>() {
{ "1", new Dictionary<string, object>()
{
{ "name", "John" },
{ "score", 5 }
}
},
{ "2", new Dictionary<string, object>()
{
{ "name", "Pete" },
{ "score", 4 }
}
},
};

您可以:

var ordered = dict.OrderBy(x => (int)((IDictionary<string, object>)x.Value)["score"]).ToArray();

这很丑陋,如果缺少 score 就会出现异常。

如果 score 可能丢失:

public static TValue GetValueOrDefault<TKey, TValue>(IDictionary<TKey, TValue> dict, TKey key)
{
TValue value;
dict.TryGetValue(key, out value);
return value;
}

然后

var ordered = dict.OrderBy(x => (int?)GetValueOrDefault((IDictionary<string, object>)x.Value, "score")).ToArray();

关于C#/Linq - 排序 IDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com