Example #1
0
 /// <summary>
 /// Gets maximum value of the provided field.
 /// </summary>
 /// <typeparam name="TField"></typeparam>
 /// <param name="field"></param>
 /// <returns></returns>
 public TField Maximum <TField>(IField <TRecord, TField> field)
 {
     this.table.ValidateField(field);
     if (!this.IsEmpty())
     {
         List <IIndex <TRecord> > list = this.table.Indexes[field.Order];
         if (list != null)
         {
             foreach (IIndex <TRecord> index in list)
             {
                 if (((IFieldHolder)index).Field == field)
                 {
                     RangeIndex <TField> rangeIndex = index as RangeIndex <TField>;
                     if (rangeIndex != null)
                     {
                         return(rangeIndex.MaximumValue(this.StoreSnapshot.Version));
                     }
                 }
             }
         }
         TField max   = field.DefaultValue;
         bool   first = true;
         foreach (RowId rowId in this)
         {
             if (first)
             {
                 max   = this.GetField(rowId, field);
                 first = false;
             }
             else
             {
                 TField value = this.GetField(rowId, field);
                 if (field.Compare(max, value) < 0)
                 {
                     max = value;
                 }
             }
         }
         return(max);
     }
     return(field.DefaultValue);
 }