using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIStudio.Wpf.DiagramDesigner.Helpers
{
public static class IEnumerableExtensions
{
///
/// Invokes a transform function on each element of a sequence and returns the minimum Double value
/// if the sequence is not empty; otherwise returns the specified default value.
///
/// The type of the elements of source.
/// A sequence of values to determine the minimum value of.
/// A transform function to apply to each element.
/// The default value.
/// The minimum value in the sequence or default value if sequence is empty.
public static double MinOrDefault(this IEnumerable source, Func selector, double defaultValue=default(double))
{
if (source.Any())
return source.Min(selector);
return defaultValue;
}
///
/// Invokes a transform function on each element of a sequence and returns the maximum Double value
/// if the sequence is not empty; otherwise returns the specified default value.
///
/// The type of the elements of source.
/// A sequence of values to determine the maximum value of.
/// A transform function to apply to each element.
/// The default value.
/// The maximum value in the sequence or default value if sequence is empty.
public static double MaxOrDefault(this IEnumerable source, Func selector, double defaultValue=default(double))
{
if (source.Any())
return source.Max(selector);
return defaultValue;
}
public static TResult MinOrDefault(this IEnumerable source, Func selector, TResult defaultValue)
{
if (source.Any())
{
return source.Min(selector);
}
return defaultValue;
}
public static TResult MaxOrDefault(this IEnumerable source, Func selector, TResult defaultValue)
{
if (source.Any())
{
return source.Max(selector);
}
return defaultValue;
}
///
/// Invokes a transform function on each element of a sequence and returns the minimum Double value
/// if the sequence is not empty; otherwise returns the specified default value.
///
/// The type of the elements of source.
/// A sequence of values to determine the minimum value of.
/// A transform function to apply to each element.
/// The default value.
/// The minimum value in the sequence or default value if sequence is empty.
public static double SumOrDefault(this IEnumerable source, Func selector, double defaultValue=default(double))
{
if (source.Any())
return source.Sum(selector);
return defaultValue;
}
}
}