Im learning LINQ and I want to find the cheapest product from the following list:
List products = new List {
n
You should use MinBy
:
public static TSource MinBy(
this IEnumerable source,
Func projectionToComparable
) {
using (var e = source.GetEnumerator()) {
if (!e.MoveNext()) {
throw new InvalidOperationException("Sequence is empty.");
}
TSource min = e.Current;
IComparable minProjection = projectionToComparable(e.Current);
while (e.MoveNext()) {
IComparable currentProjection = projectionToComparable(e.Current);
if (currentProjection.CompareTo(minProjection) < 0) {
min = e.Current;
minProjection = currentProjection;
}
}
return min;
}
}
Just add this as a method in a public static
class (EnumerableExtensions
?).
Now you can say
var cheapest = products.MinBy(x => x.Price);