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;
}