我有一个字典:
Dictionary<string, CustomClass> _details = new Dictionary<string, CustomClass>()
CustomClass
工具 IComparable
因为 CompareTo()
中有自定义排序逻辑方法。
我想遍历我所有的 CustomClass
在 _details 中按排序顺序排列。
所以我想做这样的事情:
foreach (string value in _details.Values.Sort())
{
}
但是Sort()
不是该类型的方法
我有哪些选择?
最佳答案
你的问题有点不清楚,但在重读它时似乎你想按值而不是键排序。在这种情况下,LINQ 是使用 OrderBy
的最佳方法。方法:
foreach (var pair in _details.OrderBy(p => p.Value))
{
// Use pair.Key and pair.Value here
}
或者如果您首先只想要值:
foreach (var value in _details.Values.OrderBy(p => p))
{
// Use value in here
}
请注意,您不能就地对字典进行排序 - Dictionary<,>
基本上是无序的(或者更确切地说,顺序是一个实现细节,不能以可靠的方式更改)。
如果您想按键 排序,使用 SortedList<,>
可能会更好或 SortedDictionary<,>
开始。这两者都会使集合永久地按键排序。
关于c# - .NET:如何对通用词典进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029741/