//private void ProcessCmd(DbCommand cmd) //{ // foreach (string s in m_funcParams) // { // if (!cmd.Parameters.Contains(s)) // { // cmd.CommandText = cmd.CommandText.Replace(s, "default"); // } // else // { // // remove like % // string likeString = cmd.Parameters[s].Value as string; // if (!string.IsNullOrEmpty(likeString)) // { // if (likeString[0] == '%' && likeString[likeString.Length - 1] == '%') // { // cmd.Parameters[s].Value = likeString.Substring(1, likeString.Length - 2); // } // } // // remove where clause // int idx = cmd.CommandText.IndexOf("WHERE"); // idx = cmd.CommandText.IndexOf(s, idx); // int idx2 = idx; // // jump to "=, >=" // idx2--; // while (cmd.CommandText[idx2] == ' ') // idx2--; // // jump to space // idx2--; // while (cmd.CommandText[idx2] != ' ') // idx2--; // // jump to propertyName // idx2--; // while (cmd.CommandText[idx2] == ' ') // idx2--; // // jump to space // idx2--; // while (cmd.CommandText[idx2] != ' ') // idx2--; // cmd.CommandText = cmd.CommandText.Replace(cmd.CommandText.Substring(idx2 + 1, idx - idx2 - 1 + s.Length), "1 = 1"); // } // } //} private ISearchExpression RemoveFunctionParamSearchExpression(ISearchExpression se, Dictionary <string, object> deletedParam) { if (se == null) { return(null); } if (se is LogicalExpression) { LogicalExpression le = se as LogicalExpression; ISearchExpression ls = RemoveFunctionParamSearchExpression(le.LeftHandSide, deletedParam); ISearchExpression rs = RemoveFunctionParamSearchExpression(le.RightHandSide, deletedParam); switch (le.LogicOperator) { case LogicalOperator.And: return(SearchExpression.And(ls, rs)); case LogicalOperator.Or: return(SearchExpression.Or(ls, rs)); case LogicalOperator.Not: return(SearchExpression.Not(ls)); default: throw new NotSupportedException("Not Supported LogicalOperator!"); } } else if (se is SimpleExpression) { SimpleExpression cse = se as SimpleExpression; string paramName = SearchManager.CreateParamName(cse, null); if (Array.IndexOf(m_funcParams, paramName) != -1) { deletedParam[paramName] = cse.Values; return(null); } else { return(cse); } } else { return(se); } }