public static IEnumerable <IDimensionValue> GetDimensionValues(IVector v1, Func <double, double> convert = null) { return(v1.DimensionValues.Select(dv => { double value = convert == null ? dv.Value : convert(dv.Value); DimensionValue result = new DimensionValue(dv.DimensionKey, value); return result; })); }
public async Task <IVector> GetVector(T input, IReadOnlyDictionary <IDimensionKey, Func <T, Task <double> > > conversionFuncs) { var dimensionValueTasks = conversionFuncs.Select(async kvp => { var value = await kvp.Value(input).ConfigureAwait(false); var dimensionValue = new DimensionValue(kvp.Key, value); return(dimensionValue); }); var dimensionValues = await Task.WhenAll(dimensionValueTasks).ConfigureAwait(false); var vector = new Vector(dimensionValues); return(vector); }