我有一个IEnumerable<DateTime>
var,我需要验证它是按升序还是降序排序.
我可以使用for循环来做到这一点,但有没有办法使用LINQ表达式?
var orderedByAsc = input.OrderBy(d => d);
if (input.SequenceEqual(orderedByAsc))
{
Console.WriteLine("Ordered by Asc");
return;
}
var orderedByDsc = input.OrderByDescending(d => d);
if (input.SequenceEqual(orderedByDsc))
{
Console.WriteLine("Ordered by Dsc");
return;
}
Console.WriteLine("not sorted");
Run Code Online (Sandbox Code Playgroud)
上升:
myEnumerable.Zip(myEnumerable.Skip(1), (curr, next) => curr <= next).All(x => x);
Run Code Online (Sandbox Code Playgroud)
降:
myEnumerable.Zip(myEnumerable.Skip(1), (curr, next) => curr >= next).All(x => x);
Run Code Online (Sandbox Code Playgroud)
但是使用循环,LINQ并不是一切的神奇解决方案.