【发布时间】:2021-01-17 23:28:09
【问题描述】:
我有一个Dictionary<string, Dictionary<string, object>>,需要根据子字典的某个值进行排序。
例如
{
"James": {
"Age": 21,
"Surname": "Doe",
"Temp": 80.6
},
"Tobi": {
"Age": 26,
"Surname": "Doe",
"Temp": 60.5
}
}
键为 James 和 Tobi 的字典需要根据临时值进行排序。 字符串“Temp”将被赋予该方法以指示要排序的键。
对象值类型会因上下文而异,但该类型对于允许将对象转换为正确类型以进行比较的方法是已知的。
解决方案无法创建特定对象,因为字典
所有子词典都将具有相同的“属性”,因此没有该值的子词典不会有问题。
简而言之,一个方法接受:
{
"James": {
"Age": 21,
"Surname": "Doe",
"Temp": 80.6
},
"Tobi": {
"Age": 26,
"Surname": "Doe",
"Temp": 60.5
},
"Jessica": {
"Age": 18,
"Surname": "Samms",
"Temp": 50.67
}
}
和
字符串“温度”
和可能的临时类型
字符串“双”
返回
IEnumerable<KeyValuePair<string,Dictionary<string,object>>>
{
"Jessica": {
"Age": 18,
"Surname": "Samms",
"Temp": 50.67
},
"Tobi": {
"Age": 26,
"Surname": "Doe",
"Temp": 60.5
},
"James": {
"Age": 21,
"Surname": "Doe",
"Temp": 80.6
}
}
【问题讨论】:
-
你为什么用字典?您是否考虑过将项目转换为实际对象?
-
我认为这不是
Dictionary<string, Dictionary<string, object>>,而是Dictionary<string, T>。看看我的示例:dotnetfiddle.net/J8DgS5 -
你不能对字典进行排序,它是一个哈希集
-
@jeroenh 拥有实际对象是不可能的。一个实现有年龄和姓氏,另一个实现有位置和温度。用户可以根据需要创建对象,因此它是完全通用的。存储的模型是字符串、对象的字典。
-
@StephanBadenhorst 为什么不为目标类型创建一个具有公共属性的公共基类/接口?
标签: c# linq sorting dictionary object