Я знаю, как получить максимальное значение перечисления, здесь есть ответ: Получение максимального значения перечисления .
У меня другой вопрос: мне нужно написать функцию GetMax
, которая принимает в качестве параметра только Type
перечисления, и мне нужно получить максимальное значение перечисления. Между тем, мое перечисление может происходить от long
или int
. Чтобы избежать переполнения, возвращаемое максимальное значение должно быть числовым long
.
Вот объявление функции:
long GetMax(Type type);
Я реализовал функцию, как показано ниже:
static private long GetMax(Type type)
{
long maxValue = 0;
if (Enum.GetValues(type).Length != 0)
{
maxValue = Int64.MinValue;
foreach (var x in Enum.GetValues(type))
{
maxValue = Math.Max(maxValue, Convert.ToInt64(x));
}
}
return maxValue;
}
Я думаю, что эта функция может быть реализована через LINQ для упрощения кода, но я не знаю, как это сделать. Я пробовал как:
long maxValue = Convert.ToInt64(Enum.GetValues(type).Cast<???>().ToList().Max());
Но я не знаю, что заполнять Cast <> , потому что я знаю только тип перечисления.
Есть ли решение для упрощения кода через LINQ? Thx!