Я пытаюсь найти более чистый способ возврата значения по умолчанию, когда не найдено совпадений.Пример, который я написал, чтобы лучше всего продемонстрировать мой вопрос, показан ниже из LinqPad
Таким образом, в общем случае, если заданное значение Age
не найдено в списке, SingleOrDefault
возвращает значение null
как обычно.Поэтому вместо того, чтобы возвращать null
, я выбираю самое высокое Threshold
из независимо от значения Age
.
Однако вместо использования if
или использования ?? (null coalescing operator)
есть ли более чистый способ достижения этого?Возможно, установить значение по умолчанию в свойствах get
и set
of Age внутри класса test
?
void Main()
{
var list = new List<test>()
{
new test ( 55, 27 ),
new test ( 56, 28),
new test ( 57, 29),
new test ( 59, 30),
new test ( 60, 31) //60+
};
var res = list.SingleOrDefault(x => x.Age == 61);
if (res == null)
{
list.Max(l => l.Threshold).Dump();
}
else
{
res.Threshold.Dump();
}
}
class test
{
public int Age
{
get;
set;
}
public int Threshold
{
get;
set;
}
public test(int age, int threshold)
{
Age = age;
Threshold = threshold;
}
}