c#sortedlist按它的值来排序。
时间: 2024-09-18 21:11:10 浏览: 37
在C#中,SortedList 是一个可重复键的排序键/值对集合[^2],其默认按照键的自然排序进行操作。如果你想根据值来进行排序,你需要自定义排序逻辑。为此,你可以创建一个实现了 `IComparer<T>` 接口的比较器类,该类重写了 `Compare` 方法,使其基于值进行比较。
以下是一个简单的示例,假设我们有一个 `CostComparer` 类,它比较的是两个成本(Value):
```csharp
public class CostComparer : IComparer<double>
{
public int Compare(double x, double y)
{
return y.CompareTo(x); // 按照降序排列,如果想升序就改为 x.CompareTo(y)
}
}
// 使用这个比较器创建并填充 SortedList
SortedList<double, string> list = new SortedList<double, string>(new CostComparer());
list.Add(10, "Item1");
list.Add(20, "Item2");
list.Add(5, "Item3");
// 排序后的结果会根据成本值从大到小显示
foreach (KeyValuePair<double, string> pair in list)
{
Console.WriteLine($"Value: {pair.Value}, Key: {pair.Key}");
}
```
这样,`SortedList` 的元素就会按照成本值降序排列。
阅读全文