新增文章
文章标题
分类
C#
云星空
K3 BOS
K3 功能
用友
Oracle
python
SQL
MySql
PHP
HTML
script
windows
Access
影视后期
财务
服务
生活
内容
在C#中,如果你想对 `Dictionary<string, object>` 的键值对进行排序,可以使用 `LINQ` 来实现。以下是一个示例代码,展示如何按键(`Key`)或值(`Value`)对字典进行排序: --- ### **1. 按键(Key)排序** ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var aRow = new Dictionary<string, object> { { "Name", "John" }, { "Age", 30 }, { "City", "New York" }, { "Salary", 5000.50 } }; // 按键排序 var sortedByKey = aRow.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); // 输出排序结果 foreach (var item in sortedByKey) { Console.WriteLine($"{item.Key}: {item.Value}"); } } } ``` **输出结果**: ``` Age: 30 City: New York Name: John Salary: 5000.5 ``` --- ### **2. 按值(Value)排序** 如果值是 `object` 类型,需要先将其转换为可比较的类型(如 `int`、`double` 或 `string`)。以下是一个按值排序的示例: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var aRow = new Dictionary<string, object> { { "Name", "John" }, { "Age", 30 }, { "City", "New York" }, { "Salary", 5000.50 } }; // 按值排序(假设值为数值类型) var sortedByValue = aRow.OrderBy(kvp => Convert.ToDouble(kvp.Value)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); // 输出排序结果 foreach (var item in sortedByValue) { Console.WriteLine($"{item.Key}: {item.Value}"); } } } ``` **输出结果**: ``` Age: 30 Name: John City: New York Salary: 5000.5 ``` --- ### **3. 降序排序** 如果需要降序排序,可以使用 `OrderByDescending` 方法: ```csharp // 按键降序排序 var sortedByKeyDesc = aRow.OrderByDescending(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); // 按值降序排序 var sortedByValueDesc = aRow.OrderByDescending(kvp => Convert.ToDouble(kvp.Value)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); ``` --- ### **4. 注意事项** - 如果字典中的值是复杂类型(如自定义对象),需要实现 `IComparable` 接口或使用自定义比较器。 - 排序后,`ToDictionary` 会生成一个新的字典,原始字典不会被修改。 希望这段代码对你有帮助!如果有其他问题,欢迎继续提问。
返回
保存