我有一个包含另一个字典值 像这样如何排序包含字典的字典?
Dictionary<string, Dictionary<double,double>>
现在我想通过内部字典的价值 我怎么能做到这一点对它进行排序的字典?
我有一个包含另一个字典值 像这样如何排序包含字典的字典?
Dictionary<string, Dictionary<double,double>>
现在我想通过内部字典的价值 我怎么能做到这一点对它进行排序的字典?
从您的评论的外观
抱歉,我不是C#专家,你会建议的方式来存储3个值作为一个项目?
我建议创建一个类和排序像这样
public class MyClass
{
public string StringProperty {get;set;}
public int FirstDoubleProperty {get;set;}
public int SecondDoubleProperty {get;set;}
}
然后创建一个这样
List<MyClass> MyClasscol = new List<MyClass>();
MyClass mc = new MyClass();
mc.StringProperty = "User1225072";
mc.FirstDoubleProperty = 5;
mc.SecondDoubleProperty = 6;
MyClasscol.Add(mc);
mc = new MyClass();
// and So on
集合,然后排序这样
var newsortedcollection = MyClasscol.OrderBy(x => x.FirstDoubleProperty);
非常感谢你,这个作品很棒 – user1225072
假设你现在正试图弄清楚如何存储和ord呃具有多个属性的对象的集合,那么你有几个选择。 Nikhil Agrawal's answer是一个很好的解决方案,但有时您可能不需要/想为此创建自定义类。对于这些情况(最好当你的代码是私人的,而不是某些API的一部分),那么下面的替代方案可能是一个选项。
KeyValuePairs
根据您的需求,并使用字典原来的帖子,好像不是字典词典(多层),你可能想keyvaluepairs(平)的字典。
// using keyvaluepair
var keyValueDict = new Dictionary<string, KeyValuePair<double, double>>();
keyValueDict.Add("string", new KeyValuePair<double, double>(5.8, 7.4));
var sortedKeyValues = keyValueDict.OrderBy(x => x.Value.Key);
元组
到不那么愉快KeyValuePair另一种方法是在.NET 4引入的元组中的元组是一个通用类,它允许你存储类型的属性值,而无需创建自己的自定义类。值得注意的是,有多达8个属性的元组实现。
// using tuple
var tupleList = new List<Tuple<string, double, double>>();
tupleList.Add(new Tuple<string, double, double>("string", 5.8, 7.4));
var sortedTuples = tupleList.OrderBy(x => x.Item2);
有一些良好的元组SO问题,如果你有兴趣:
Is Using .NET 4.0 Tuples in my C# Code a Poor Design Decision?
Are EventArg classes needed now that we have generics
很棒的信息,谢谢 – user1225072
我还没有去想象你为什么会需要这样的数据结构,但都有些什么您将持有的数据示例以及如何对数据进行排序?请记住,字典本身不可排序。 – gunr2171
字典的某些价值和你想要对它们进行排序的依据会有所帮助。 –
对不起,我不是c#的专家,你会建议一种方法来存储3个值作为一个项目? – user1225072