私は{1、3、5、6、8,9}のような順序付けられたシーケンスを持っています。 は今、私はこのようにそれをやっている:最初に不足している要素を順序付けられた順序で取得する効率的な方法はありますか?
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;
}
しかし、私ははるかに高速な方法があると思います。助言がありますか?
「Count()」は非常に悪いです...投稿する... –
これは整数だけですか?彼らは常にポジティブですか?重複はありますか? –
常に正の整数、重複はありません – xumix