Custom Aggregate Function: ArgumentMin()
Review the documentation on Custom Aggregate Functions for full details on developing and implementing this function.
Description | Returns the corresponding correspondingValue associated with the minimum value of minimizedValue . |
---|---|
Arguments |
|
Namespaces |
|
Example | To return the last name of the employee who has the least amount of revenue: ArgumentMin({OrderDetails.Revenue}, {Employees.LastName}) |
Program Code
public class MinMapAggregator: ICustomAggregator { IComparable min; object minKey; public void AddValue(SessionInfo sessionInfo, object value, params object[] args) { // Treat nulls as zero if (value == null) value = 0; else if (!(value is IComparable)) { throw new WrAggregationException(@"Tried to take the minimum of a set containing a non-comparable value"); } if (this.min == null || this.min.CompareTo(value) == 1) { this.min = (IComparable)value; // The "key" to associate with the minimum value is passed as the second // argument to this aggregate function, which shows up here as the first item // in the args array. this.minKey = args[0]; } } public object Result(SessionInfo sessionInfo) { return this.minKey; } }