C# JArray 按照对象里的属性 时间降序排序
时间: 2025-07-06 12:52:32 浏览: 4
### C# 中对 JArray 对象按时间属性进行降序排序
为了实现 `JArray` 对象按照特定的时间属性进行降序排序,在 C# 中可以采用 LINQ 表达式来完成这一需求。下面是一个具体的例子,展示了如何读取 JSON 数组并依据其中的对象的一个日期字段来进行排序。
假设有一个表示事件列表的 JSON 数据结构,每个事件都有一个名为 `"date"` 的字符串类型的键用于记录发生的时间戳:
```csharp
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
// 假设这是从某处获取到的原始JSON数组字符串形式的数据
string jsonArrayString = "[{\"name\":\"EventA\",\"date\":\"2023-07-18T14:30:00\"},{\"name\":\"EventB\",\"date\":\"2023-05-29T09:15:00\"}]";
JArray events = JArray.Parse(jsonArrayString);
var sortedEvents = from eventItem in events.Children<JObject>()
let dateValue = (DateTime)eventItem["date"]
orderby dateValue descending
select new {
Name = (string)eventItem["name"],
Date = dateValue
};
foreach(var item in sortedEvents){
Console.WriteLine($"Name:{item.Name},Date:{item.Date}");
}
```
上述代码片段首先解析了一个 JSON 字符串成 `JArray` 类型,接着通过 LINQ 查询语法遍历该集合内的每一个 `JObject` 实例,并提取出代表时间的那个成员变量转换为 .NET 的 DateTime 类型以便比较大小,最后根据这个时间值做降序排列[^1]。
需要注意的是这里假定所有的 "date" 键对应的都是有效的 ISO 8601 时间格式字符串,如果实际应用中遇到不同的格式可能需要额外处理才能成功转化为 `DateTime` 进行对比。
阅读全文
相关推荐


















