using System; using System.Collections.Generic; public static class ListApplyAndFunction { public static List Apply(this IEnumerable input, ListApplyAndFunction.Function function, bool discardNulls = false) { List list = new List(); foreach (TInput arg in input) { TResult tresult = function(arg); if (!discardNulls || tresult != null) { list.Add(tresult); } } return list; } public delegate TResult Function(TArg1 arg1); public delegate TResult Function(TArg1 arg1, TArg2 arg2); public delegate TResult Function(TArg1 arg1, TArg2 arg2, TArg3 arg3); }