What you want is this:
IEnumerable<double> results = ... your query ...
double result = results.MinOrDefault();
Well, MinOrDefault()
does not exist. But if we were to implement it ourselves it would look something like this:
public static class EnumerableExtensions
{
public static T MinOrDefault<T>(this IEnumerable<T> sequence)
{
if (sequence.Any())
{
return sequence.Min();
}
else
{
return default(T);
}
}
}
However, there is functionality in System.Linq
that will produce the same result (in a slightly different way):
double result = results.DefaultIfEmpty().Min();
If the results
sequence contains no elements, DefaultIfEmpty()
will produce a sequence containing one element - the default(T)
- which you subsequently can call Min()
on.
If the default(T)
is not what you want, then you could specify your own default with:
double myDefault = ...
double result = results.DefaultIfEmpty(myDefault).Min();
Now, that's neat!