Custom Aggregate Function: ArgumentMin()
Review the documentation on Custom Aggregate Functions for full details on developing and implementing this function.
| Description | Returns the corresponding correspondingValueassociated with the minimum value ofminimizedValue. | 
|---|---|
| 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;
 }
}