public Table SelectRecords(FilterExpressionGroup filter, string[] fieldList, string[] orderByList) { int length; FwNs.Data.FyleDbNs.Fields fields = new FwNs.Data.FyleDbNs.Fields(this._fields.Count); if (fieldList != null) { length = fieldList.Length; for (int i = 0; i < length; i++) { string fieldName = fieldList[i]; if (!this._fields.ContainsKey(fieldName)) { throw new Exception(string.Format("Invalid field name - {0}", fieldName)); } Field field = this._fields[fieldName]; fields.Add(new Field(fieldName, field.DataType, i)); } } else { length = this._fields.Count; for (int i = 0; i < length; i++) { Field field2 = this._fields[i]; fields.Add(new Field(field2.Name, field2.DataType, i)); } } Records records = new Records(Math.Min(10, base.Count)); foreach (Record record in this) { if (FileDbEngine.evaluate(filter, record.Values.ToArray(), this._fields)) { object[] values = new object[length]; if (fieldList != null) { for (int i = 0; i < length; i++) { string str2 = fieldList[i]; values[i] = record[str2]; } } else { for (int i = 0; i < length; i++) { values[i] = record[i]; } } Record item = new Record(fields, values); records.Add(item); } } if (orderByList != null) { this.orderBy(records, fieldList, orderByList); } return(new Table(fields, records, false)); }
public Table(FwNs.Data.FyleDbNs.Fields fields, Records records, bool copyFields) : base(records.Count) { this.initFields(fields, copyFields); if (records != null) { foreach (Record record in records) { base.Add(record); } } }
internal void Create(FwNs.Data.FyleDbNs.Fields fields, object[][] records, bool copyFields) { base.Clear(); this.initFields(fields, copyFields); if (records != null) { for (int i = 0; i < records.Length; i++) { object[] values = records[i]; Record item = new Record(this._fields, values); base.Add(item); } } }
private void initFields(FwNs.Data.FyleDbNs.Fields fields, bool copyFields) { if (copyFields) { this._fields = new FwNs.Data.FyleDbNs.Fields(fields.Count); int num = 0; using (List <Field> .Enumerator enumerator = fields.GetEnumerator()) { while (enumerator.MoveNext()) { Field field = enumerator.Current.Clone(); field.Ordinal = num++; this._fields.Add(field); } return; } } this._fields = fields; }
private Record createRecord(object[] record, string[] fieldList, bool includeIndex) { Record record2 = null; if (record == null) { return(record2); } int num = includeIndex ? 1 : 0; FwNs.Data.FyleDbNs.Fields fields = null; if (fieldList != null) { fields = new FwNs.Data.FyleDbNs.Fields(fieldList.Length + num); for (int i = 0; i < fieldList.Length; i++) { string fieldName = fieldList[i]; if (fields.ContainsKey(fieldName)) { throw new FileDbException(string.Format("Field name cannot be specified twice in list - {0}", fieldName), FileDbExceptionsEnum.FieldSpecifiedTwice); } fields.Add(this._db.Fields[fieldName]); } } else { fields = new FwNs.Data.FyleDbNs.Fields(this._db.Fields.Count + num); foreach (Field field in this._db.Fields) { fields.Add(field); } } if (includeIndex) { fields.Add(new Field("index", DataTypeEnum.Int, fields.Count)); } return(new Record(fields, record)); }
private T createT <T>(object[] record, string[] fieldList, bool includeIndex) where T : class, new() { T local = default(T); if (record != null) { int num = includeIndex ? 1 : 0; FwNs.Data.FyleDbNs.Fields fields = null; if (fieldList != null) { fields = new FwNs.Data.FyleDbNs.Fields(fieldList.Length + num); for (int j = 0; j < fieldList.Length; j++) { string fieldName = fieldList[j]; if (fields.ContainsKey(fieldName)) { throw new FileDbException(string.Format("Field name cannot be specified twice in list - {0}", fieldName), FileDbExceptionsEnum.FieldSpecifiedTwice); } fields.Add(this._db.Fields[fieldName]); } } else { fields = new FwNs.Data.FyleDbNs.Fields(this._db.Fields.Count + num); foreach (Field field in this._db.Fields) { fields.Add(field); } } if (includeIndex) { fields.Add(new Field("index", DataTypeEnum.Int, fields.Count)); } local = Activator.CreateInstance <T>(); PropertyInfo[] properties = typeof(T).GetProperties(~BindingFlags.Static); new Dictionary <string, PropertyInfo>(properties.Length); for (int i = 0; i < fields.Count; i++) {
public Table(FwNs.Data.FyleDbNs.Fields fields, object[][] records, bool copyFields) { this.Create(fields, records, copyFields); }
public Table(FwNs.Data.FyleDbNs.Fields fields, bool copyFields) { this.Create(fields, null, copyFields); }
public Table(FwNs.Data.FyleDbNs.Fields fields) { this.Create(fields, null, true); }