C#:验证DateTime是否按升序排列

C#:验证DateTime是否按升序排列,c#,C#,我有下面的代码,用于获取每个事件的starttime。如何验证该时间现在是否按升序排列 List<dynamic> list= new List<dynamic>(); foreach (var item in jsonData.x[0].y) { list.Add(item.StartTime.Value); Console.WriteLine(item.AdvertisedStartTime); } 它

我有下面的代码,用于获取每个事件的
starttime
。如何验证该时间现在是否按升序排列

List<dynamic> list= new List<dynamic>();
foreach (var item in jsonData.x[0].y)
{
    list.Add(item.StartTime.Value);            
    Console.WriteLine(item.AdvertisedStartTime);            
}
它将按
TimeofDay
对列表进行排序,但实际上我想验证
list
是否按升序排列

我应该如何处理这个问题?

list.OrderBy()使用asc顺序,list.OrderByDescending()使用desc顺序。若要验证,可以使用DateTime方法CompareTo(),代码段如下所示

 DateTime dt1 = DateTime.Now;
 DateTime dt2=DateTime.Now+TimeSpan.FromDays(1);
 var value = dt2.CompareTo(dt1);
 value may be -1,0,1, means earlier, same, later
list.OrderBy()使用asc顺序,list.OrderByDescending()使用desc顺序。若要验证,可以使用DateTime方法CompareTo(),代码段如下所示

 DateTime dt1 = DateTime.Now;
 DateTime dt2=DateTime.Now+TimeSpan.FromDays(1);
 var value = dt2.CompareTo(dt1);
 value may be -1,0,1, means earlier, same, later
答复 您可以使用
foreach
循环来确保
列表中的每个继续
DateTime
实例的值大于或等于
列表中先前的
DateTime
实例的值

ForEach循环解释
foreach
循环按顺序遍历
列表中的每个实例,从
列表中的第一项开始,到
列表中的最后一项结束

以下是Microsoft关于
foreach
循环的官方文档:

比较解释 在
foreach
循环中,我们使用
CompareTo
方法来比较
DateTime
实例。在C#中,可以使用
CompareTo
方法比较相同类型的两个实例

如果第一个实例位于
CompareTo
内的实例之前,则返回
-1
。如果第一个实例在
CompareTo
中具有与该实例相同的位置(或者在本例中为相同的
DateTime
值),它将返回
0
。最后,如果第一个实例跟随
CompareTo
中的实例,它将返回
1

以下是Microsoft关于
比较的官方文档

示例代码
使用System.Linq;
使用System.Collections.Generic;
bool IsDateTimeListAscendingOrder(列表日期时间列表)
{
var previousDateTimeItem=dateTimeList.FirstOrDefault();
foreach(dateTimeList中的DateTime currentDateTimeItem)
{
如果(currentDateTimeItem.CompareTo(previousDateTimeItem)<0)
返回false;
}
返回true;
}
答案 您可以使用
foreach
循环来确保
列表中的每个继续
DateTime
实例的值大于或等于
列表中先前的
DateTime
实例的值

ForEach循环解释
foreach
循环按顺序遍历
列表中的每个实例,从
列表中的第一项开始,到
列表中的最后一项结束

以下是Microsoft关于
foreach
循环的官方文档:

比较解释 在
foreach
循环中,我们使用
CompareTo
方法来比较
DateTime
实例。在C#中,可以使用
CompareTo
方法比较相同类型的两个实例

如果第一个实例位于
CompareTo
内的实例之前,则返回
-1
。如果第一个实例在
CompareTo
中具有与该实例相同的位置(或者在本例中为相同的
DateTime
值),它将返回
0
。最后,如果第一个实例跟随
CompareTo
中的实例,它将返回
1

以下是Microsoft关于
比较的官方文档

示例代码
使用System.Linq;
使用System.Collections.Generic;
bool IsDateTimeListAscendingOrder(列表日期时间列表)
{
var previousDateTimeItem=dateTimeList.FirstOrDefault();
foreach(dateTimeList中的DateTime currentDateTimeItem)
{
如果(currentDateTimeItem.CompareTo(previousDateTimeItem)<0)
返回false;
}
返回true;
}

使用for循环。检查前一时间是否大于当前时间。如果是,则未排序。@Rob您能帮助处理示例代码吗?Hi@v.api!我删除了@Rob的评论,并在下面为您添加了一些示例代码。如果你有任何问题,请告诉我!使用for循环。检查前一时间是否大于当前时间。如果是,则未排序。@Rob您能帮助处理示例代码吗?Hi@v.api!我删除了@Rob的评论,并在下面为您添加了一些示例代码。如果你有任何问题,请告诉我!谢谢你这么好的解释!谢谢你这么好的解释!
using System.Linq;
using System.Collections.Generic;

bool IsDateTimeListInAscendingOrder(List<DateTime> dateTimeList)
{
    var previousDateTimeItem = dateTimeList.FirstOrDefault();

    foreach (DateTime currentDateTimeItem in dateTimeList)
    {
        if (currentDateTimeItem.CompareTo(previousDateTimeItem) < 0)
            return false;
    }

    return true;
}