.NET 如何检查列表<int> 是否按数字顺序 (1-9)?

.NET How to check if a list<int> is in numerical order (1-9)?

我有一个列表,例如 { 1, 2, 3, 4, 5 } 或 { 1, 2, 4 } 或 { 3, 4, 5 }。我需要检查列表是否按数字顺序排列且没有跳过。例如,{ 1, 2, 3 } 有效,但 { 1, 2, 4 } 无效。该列表可以以任意数字开始,以任意数字结束,并包含任意数量的整数。这就是我所拥有的,它似乎有效但不是很优雅。有更好或更清洁的方法吗?

public bool ValidateList(List<int> list)
{
    int previousInt = null;
    foreach (var index in list)
    {
        if (previousInt == null)
        {
            previousInt = index;
            continue;
        }

        if (index != previousInt + 1)
            return false;

        previousInt = index;
    }

    return true;
}

LINQ 非常适合这类事情:

using System.Linq;

bool ValidateList(List<int> list)
{
    var range = Enumerable.Range(list.First(), list.Count());
    return Enumerable.SequenceEqual(range, list);
}