/// <summary> /// Get the longest list of arguments. /// For a parameter set like p1, p2, p3 and argument lists like {a} {b1,b2,b3} {c1,c2} /// This will return a List of Lists of objects like: /// {a,b1,c1} {a,b2,c2} {a,b3,c2} /// </summary> /// <param name="args"></param> /// <param name="pi"></param> /// <returns></returns> private static List <List <object> > GetLongestArguments(FSharpList <Value> args, ParameterInfo[] pi) { var parameters = new List <List <object> >(); //find the LARGEST list in the inputs int end = args.Where(arg => arg.IsList).Select(arg => ((Value.List)arg).Item.Count()).Concat(new[] { 1 }).Max(); BuildParameterList(args, pi, end, parameters); return(parameters); }
/// <summary> /// Get the shortest list of arguments. /// For a parameter set like p1, p2, p3 and argument lists like {a} {b1,b2,b3} {c1,c2} /// This will return a List of Lists of objects like: /// {a,b1,c1} {a,b2,c2} /// </summary> /// <param name="args"></param> /// <param name="pi"></param> /// <returns></returns> private static List<List<object>> GetShortestArguments(FSharpList<Value> args, ParameterInfo[] pi) { var parameters = new List<List<object>>(); //find the SMALLEST list in the inputs int end = args.Where(arg => arg.IsList).Select(arg => ((Value.List) arg).Item.Count()).Concat(new[] {1000000}).Min(); BuildParameterList(args, pi, end, parameters); return parameters; }