小编xum*_*mix的帖子

在有序序列中获得第一个缺失元素的有效方法?

我有一个有序的序列,如{1,3,5,6,8,9}我想得到第一个缺少元素(示例中为2)或max()如果序列不包含缺失元素.现在我这样做:

public static int GetRegisterNumber<T>(this IQueryable<T> enumerable, Func<T, bool> whereFunc, Func<T, int?> selectFunc)
{
    var regNums = enumerable.OrderBy(selectFunc).Where(whereFunc).ToArray();

    if (regNums.Count() == 0)
    {
        return 1;
    }

    for (int i = 0; i < regNums.Count(); i++)
    {
        if (i + 1 != regNums[i])
        {
            return regNums[i].Value + 1;
        }
    }

    return regNums.Last().Value + 1;
}
Run Code Online (Sandbox Code Playgroud)

但我认为有更快的方法.有什么建议?

c# linq search linq-to-sql

5
推荐指数
3
解决办法
3610
查看次数

标签 统计

c# ×1

linq ×1

linq-to-sql ×1

search ×1