public static void SortByKeyValue(this IIndexedDict[] items, params int[] keyFields) { Array.Sort <IIndexedDict>(items, (Comparison <IIndexedDict>)( (a, b) => { var lsta = a.ValuesList; var lstb = b.ValuesList; foreach (int i in keyFields) { var va = lsta[i]; var ca = va as IComparable; int r = (ca != null) ? ca.CompareTo(lstb[i]) : Cmp.cmp(va, lstb[i]); if (r != 0) { return(r); } } return(0); } )); }