public SszExpression(SszExpression that) { _expressionString = that._expressionString; IsValidInternal = that.IsValidInternal; _isUiToDataSourceWarning = that._isUiToDataSourceWarning; _expressionType = that._expressionType; _lambdaExpression = that._lambdaExpression; _delegate = that._delegate; }
private static string ComputeValueOfSszQuery(string sszQuery, Func <string, string> getConstantValue, CsvDb?csvDb, ref int iterationN) { string q = sszQuery.Substring(2, sszQuery.Length - 3); var firstLevelSszQueries = FindFirstLevelSpecialText(q, '%', false); foreach (string firstLevelSszQuery in firstLevelSszQueries) { string valueOfQuery = ComputeValueOfSszQuery(firstLevelSszQuery, getConstantValue, csvDb, ref iterationN); q = q.Replace(firstLevelSszQuery, EscapeForSszQuery(valueOfQuery)); } var i = q.IndexOf("=>"); if (i >= 0) { var dataSourceValues = new List <object>(); string args = UnescapeForSszQuery(q.Substring(0, i).Trim()); string lambda = UnescapeForSszQuery(q.Substring(i + 2).Trim()); foreach (var a in args.Split(',')) { string constant = a.Trim(); if (constant == @"") { return(@""); // Query is not resolved } constant = @"%(" + constant + @")"; string valueOfQuery = getConstantValue(constant); dataSourceValues.Add(valueOfQuery); } var evaluated = new SszExpression(lambda).Evaluate(dataSourceValues.ToArray(), null, null, null); return(new Any(evaluated).ValueAsString(false)); } string[] parts = q.Split(','); if (parts.Length == 1 || parts.Length == 2) { string constant = UnescapeForSszQuery(parts[0].Trim()); if (constant == @"") { return(@""); // Query is not resolved } constant = @"%(" + constant + @")"; string valueOfSszQuery = getConstantValue(constant); if (valueOfSszQuery == @"" && parts.Length == 2) { valueOfSszQuery = UnescapeForSszQuery(parts[1].Trim()); } return(valueOfSszQuery); } if ((parts.Length == 3 || parts.Length == 4) && csvDb is not null) { string fileName = UnescapeForSszQuery(parts[0].Trim()); string key = UnescapeForSszQuery(parts[1].Trim()); int column; if (!int.TryParse(UnescapeForSszQuery(parts[2].Trim()), out column)) { return(@""); // Query is not resolved } string valueOfSszQuery = csvDb.GetValue(fileName, key, column) ?? @""; if (valueOfSszQuery == @"" && parts.Length == 4) { valueOfSszQuery = UnescapeForSszQuery(parts[3].Trim()); } return(valueOfSszQuery); } return(@""); // Query is not resolved }
public SszStatement(string condition, string value, int paramNum) { Condition = new SszExpression(condition); Value = new SszExpression(value); ParamNum = paramNum; }
public SszStatement() { Condition = new SszExpression(); Value = new SszExpression(); }