Custom Aggregate Function: AggDistinctAvg()
Review the documentation on Custom Aggregate Functions for full details on developing and implementing this function.
| Description | Returns the average of only unique values in a series of values. |
|---|---|
| Arguments |
|
| Namespaces |
|
| References |
|
| Example | AggDistinctAvg({OrderDetails.Quantity}) |
Program Code
public class AggDistinctAvg : ICustomAggregator
{
HashSet<Decimal> list = new HashSet<Decimal>();
public void AddValue(SessionInfo sessionInfo, object value, params object[] args)
{
Decimal curVal;
if (value == null)
curVal = 0;
else if (!Decimal.TryParse(value.ToString(), out curVal))
{
throw new WrAggregationException(@"Tried to take the average of a set
containing a non-number");
}
this.list.Add(curVal);
}
public object Result(SessionInfo sessionInfo)
{
Decimal sum = 0;
foreach (Decimal val in list)
{
sum += val;
}
return sum/this.list.Count; // should never be 0
}
}