private List <T> OrderBy(string orderFieldName, List <T> recordList, OrderByExpression.OrderType orderType) { for (int i = 0; i < recordList.Count; i++) { for (int j = recordList.Count - 1; j > i; j--) { int previousIndex = j - 1; T recordA = recordList[j]; T recordB = recordList[previousIndex]; PropertyInfo pinfoA = recordA.GetType().GetProperty(orderFieldName); PropertyInfo pinfoB = recordB.GetType().GetProperty(orderFieldName); BaseFieldSchema fieldScheamA = recordA.fieldSchemaCollection.Get(orderFieldName); BaseFieldSchema fieldScheamB = recordB.fieldSchemaCollection.Get(orderFieldName); object valueA = pinfoA.GetValue(recordA, null); object valueB = pinfoB.GetValue(recordB, null); if (orderType == OrderByExpression.OrderType.Asc && false != fieldScheamA.MoreThan(valueB)) { T table = recordList[previousIndex]; recordList[previousIndex] = recordList[j]; recordList[j] = table; } else if (orderType == OrderByExpression.OrderType.Desc && false != fieldScheamB.MoreThan(valueA)) { T table = recordList[previousIndex]; recordList[previousIndex] = recordList[j]; recordList[j] = table; } } } return(recordList); }
public ConditionExpression(string fieldName, string comparisonOperator, BaseFieldSchema field) { this.fieldName = fieldName; this.comparisonOperator = comparisonOperator; this.field = field; }