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