排序最接近当前日期的日期列表

bom*_*sen 2 c# sorting datetime

我必须有一个具有DateTime属性的对象列表,我需要对此列表进行排序,以便具有最接近日期的对象DateTime.Now在列表中排在第一位.

我尝试过以下方法:

nodes.Sort((x, y) => DateTime.Compare(
         DateTime.Now, 
         DateTime.Parse(x.GetProperty("date").Value)));
Run Code Online (Sandbox Code Playgroud)

但这并没有返回正确的结果.

有谁知道这样做的好方法?:-)

Lee*_*Lee 8

您可以通过节点的时间和当前时间之间的绝对差来对它们进行排序.您可以TimeSpan使用Duration方法获取a的绝对时间:

DateTime now = DateTime.Now;
var ordered = nodes.OrderBy(n => (now - DateTime.Parse(n.GetProperty("date").Value)).Duration())
Run Code Online (Sandbox Code Playgroud)