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;
}
}