示例#1
0
 public static object CalculateLambdaExpression(ColumnExpression expression, Type dataType, Type[] servicePredefinedTypes, DataRow dataRow, DataRow inputRow)
 {
     if (!ExpressionCalculator.IsCacheValid(expression, dataRow, inputRow))
     {
         expression.CachedDelegate = new CachedDelegate
         {
             TemplateDataRow  = ((dataRow != null) ? dataRow.Table.Clone().NewRow() : null),
             TemplateInputRow = ((inputRow != null) ? inputRow.Table.Clone().NewRow() : null)
         };
         expression.CachedDelegate.CompiledDelegate = ExpressionCalculator.CompileLambdaExpression(expression, dataType, servicePredefinedTypes, expression.CachedDelegate.TemplateDataRow, expression.CachedDelegate.TemplateInputRow);
     }
     if (expression.CachedDelegate.TemplateDataRow != null)
     {
         expression.CachedDelegate.TemplateDataRow.ItemArray = dataRow.ItemArray;
     }
     if (expression.CachedDelegate.TemplateInputRow != null)
     {
         expression.CachedDelegate.TemplateInputRow.ItemArray = inputRow.ItemArray;
     }
     return(expression.CachedDelegate.CompiledDelegate.DynamicInvoke(expression.DependentColumns.ToArray()));
 }
示例#2
0
 internal static Delegate CompileLambdaExpression(ColumnExpression expression, Type dataType, DataRow dataRow, DataRow inputRow)
 {
     return(ExpressionCalculator.CompileLambdaExpression(expression, dataType, null, dataRow, inputRow));
 }