Tôi có một chuỗi thứ tự như {1, 3, 5, 6, 8, 9} Tôi muốn lấy phần tử thiếu đầu tiên (2 trong ví dụ) hoặc max() nếu chuỗi không chứa phần tử bị thiếu. Bây giờ tôi đang làm như sau:Cách hiệu quả để lấy phần tử thiếu đầu tiên trong chuỗi thứ tự?
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;
}
Nhưng tôi nghĩ rằng có nhiều phương pháp nhanh hơn. Bất kỳ đề xuất?
'Đếm()' rất rất tệ ... sẽ đăng ... –
Chỉ có số nguyên? Họ luôn luôn tích cực? Có bản sao không? –
luôn là số nguyên dương, không trùng lặp – xumix