protected ResultSet.ResultSet Apply(ResultSet.ResultSet rs, Func <bool, bool> onApply) { var filteredRs = new ResultSet.ResultSet(); var table = rs.Table.Clone(); filteredRs.Load(table); filteredRs.Table.Clear(); foreach (DataRow row in rs.Rows) { if (onApply(RowApply(row))) { if (filteredRs.Rows.Count == 0 && filteredRs.Columns.Count != row.Table.Columns.Count) { foreach (DataColumn column in row.Table.Columns) { if (!filteredRs.Columns.Cast <DataColumn>().Any(x => x.ColumnName == column.ColumnName)) { filteredRs.Columns.Add(column.ColumnName, typeof(object)); } } } filteredRs.Table.ImportRow(row); } } filteredRs.Table.AcceptChanges(); return(filteredRs); }
public virtual ResultSet.ResultSet Transform(ResultSet.ResultSet resultSet) { foreach (var identifier in cacheTransformers.Keys) { var tsStart = DateTime.Now; var transformer = cacheTransformers[identifier]; var newColumn = new DataColumn() { DataType = typeof(object) }; resultSet.Table.Columns.Add(newColumn); var ordinal = (identifier as ColumnOrdinalIdentifier)?.Ordinal ?? resultSet.Table.Columns[(identifier as ColumnNameIdentifier).Name].Ordinal; foreach (DataRow row in resultSet.Table.Rows) { row[newColumn.Ordinal] = transformer.Execute(row[ordinal]); } resultSet.Table.Columns.RemoveAt(ordinal); newColumn.SetOrdinal(ordinal); Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceInfo, string.Format("Time needed to transform column {0}: {1}", identifier.Label, DateTime.Now.Subtract(tsStart).ToString(@"d\d\.hh\h\:mm\m\:ss\s\ \+fff\m\s"))); } return(resultSet); }
public IDictionary <KeyCollection, DataTable> Execute(ResultSet.ResultSet resultSet) { return(new Dictionary <KeyCollection, DataTable>() { { new KeyCollection(Array.Empty <object>()), resultSet.Table } }); }
public IDictionary <KeyCollection, DataTable> Execute(ResultSet.ResultSet resultSet) { return(new Dictionary <KeyCollection, DataTable>() { { new KeyCollection(new object[] { }), resultSet.Table } }); }
public virtual ResultSet.ResultSet Transform(ResultSet.ResultSet resultSet) { foreach (var index in cacheTransformers.Keys) { var tsStart = DateTime.Now; var transformer = cacheTransformers[index]; var newColumn = new DataColumn() { DataType = typeof(object) }; resultSet.Table.Columns.Add(newColumn); foreach (DataRow row in resultSet.Table.Rows) { row[newColumn.Ordinal] = transformer.Execute(row[index]); } resultSet.Table.Columns.RemoveAt(index); newColumn.SetOrdinal(index); Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, string.Format("Time needed to transform column with index {0}: {1}", index, DateTime.Now.Subtract(tsStart).ToString(@"d\d\.hh\h\:mm\m\:ss\s\ \+fff\m\s"))); } return(resultSet); }
public ResultSet.ResultSet Apply(ResultSet.ResultSet rs) { if (rs == null) { throw new ArgumentNullException(); } return(rs); }
public ResultSet.ResultSet AntiApply(ResultSet.ResultSet rs) { if (rs == null) { throw new ArgumentNullException(); } var filteredRs = new ResultSet.ResultSet(); var table = rs.Table.Clone(); filteredRs.Load(table); return(filteredRs); }
public ResultSet.ResultSet Apply(ResultSet.ResultSet rs) { var newRs = rs.Clone(); var groups = groupBy.Execute(rs); foreach (var group in groups) { var groupRs = new ResultSet.ResultSet(); groupRs.Load(group.Value); var filtered = filter.Apply(groupRs); newRs.AddRange(filtered.Rows.Cast <DataRow>()); } return(newRs); }
public ResultSet.ResultSet Apply(ResultSet.ResultSet rs) { IList <ScoredObject> subset = new List <ScoredObject>(); var scorer = new DataRowScorer(Operand, Aliases, Expressions); foreach (DataRow row in rs.Rows) { var score = scorer.Execute(row); InsertRow(score, ref subset); } var newRs = rs.Clone(); newRs.Load(subset.Select(x => x.Value as DataRow)); return(newRs); }
protected ResultSet.ResultSet Apply(ResultSet.ResultSet rs, Func <bool, bool> onApply) { var filteredRs = new ResultSet.ResultSet(); var table = rs.Table.Clone(); filteredRs.Load(table); foreach (DataRow row in rs.Rows) { if (onApply(RowApply(row))) { filteredRs.Table.ImportRow(row); } } filteredRs.Table.AcceptChanges(); return(filteredRs); }
protected ResultSet.ResultSet Apply(ResultSet.ResultSet rs, Func <bool, bool> onApply) { var filteredRs = new ResultSet.ResultSet(); var table = rs.Table.Clone(); filteredRs.Load(table); foreach (DataRow row in rs.Rows) { var value = GetValueFromRow(row, operand); if (onApply(executeFunction(value))) { filteredRs.Table.ImportRow(row); } } filteredRs.Table.AcceptChanges(); return(filteredRs); }
public IDictionary <KeyCollection, DataTable> Execute(ResultSet.ResultSet resultSet) { var stopWatch = new Stopwatch(); var dico = new Dictionary <KeyCollection, DataTable>(); var keyComparer = BuildDataRowsKeyComparer(resultSet.Table); stopWatch.Start(); foreach (DataRow row in resultSet.Rows) { var key = keyComparer.GetKeys(row); if (!dico.ContainsKey(key)) { dico.Add(key, row.Table.Clone()); } dico[key].ImportRow(row); } Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, string.Format("Building rows' groups: {0} [{1}]", dico.Count, stopWatch.Elapsed.ToString(@"d\d\.hh\h\:mm\m\:ss\s\ \+fff\m\s"))); return(dico); }
protected ResultSet.ResultSet Apply(ResultSet.ResultSet rs, Func <bool, bool> onApply) { var filteredRs = new ResultSet.ResultSet(); var table = rs.Table.Clone(); filteredRs.Load(table); var factory = new PredicateFactory(); var predicate = factory.Get(predicateInfo); foreach (DataRow row in rs.Rows) { var dico = new Dictionary <string, object>(); foreach (var variable in variables) { dico.Add(variable.Name, row[variable.Column]); } foreach (var expression in expressions) { var exp = new NCalc.Expression(expression.Value); exp.Parameters = dico; var result = exp.Evaluate(); dico.Add(expression.Name, result); } var value = dico[predicateInfo.Name]; if (onApply(predicate.Compare(value, predicateInfo.Reference))) { filteredRs.Table.ImportRow(row); } } filteredRs.Table.AcceptChanges(); return(filteredRs); }
public ResultSet.ResultSet Apply(ResultSet.ResultSet rs) { return(Apply(rs, (x => x))); }
public ResultSet.ResultSet AntiApply(ResultSet.ResultSet rs) => throw new NotImplementedException();