internal static Dictionary <string, object> GetSearchExpreesionValues(ISearchExpression se) { Dictionary <string, object> ret = new Dictionary <string, object>(); Feng.Search.LogicalExpression le = se as Feng.Search.LogicalExpression; if (le != null) { Dictionary <string, object> r = GetSearchExpreesionValues(le.LeftHandSide); foreach (KeyValuePair <string, object> kvp in r) { ret[kvp.Key] = kvp.Value; } r = GetSearchExpreesionValues(le.RightHandSide); foreach (KeyValuePair <string, object> kvp in r) { ret[kvp.Key] = kvp.Value; } } else { Feng.Search.SimpleExpression ce = se as Feng.Search.SimpleExpression; ret[ce.FullPropertyName + ce.Operator.ToString()] = ce.Values; } return(ret); }
private ISearchExpression RemoveParentSelectAsExpression(ISearchExpression exp) { if (m_parentSm.SelectAsColumns == null) /* || m_innerSearchManager.Count == 0) */ // 不知道为什么有这句话 { return(exp); } Feng.Search.LogicalExpression le = exp as Feng.Search.LogicalExpression; if (le != null) { ISearchExpression sel = RemoveParentSelectAsExpression(le.LeftHandSide); ISearchExpression ser = RemoveParentSelectAsExpression(le.RightHandSide); return(new Feng.Search.LogicalExpression(sel, ser, le.LogicOperator)); } else { Feng.Search.SimpleExpression se = exp as Feng.Search.SimpleExpression; if (se != null) { if (m_parentSm.SelectAsColumns.ContainsKey(se.FullPropertyName)) { return(SearchExpression.True()); } else { return(se); } } } return(null); }
internal static ISearchExpression ReplaceSearchExpreesionValues(ISearchExpression se, Dictionary <string, object> dict) { Feng.Search.LogicalExpression le = se as Feng.Search.LogicalExpression; if (le != null) { ISearchExpression l = le.LeftHandSide; l = ReplaceSearchExpreesionValues(l, dict); ISearchExpression r = le.RightHandSide; r = ReplaceSearchExpreesionValues(r, dict); if (l == null) { return(r); } else if (r == null) { return(l); } else { return(new Feng.Search.LogicalExpression(l, r, le.LogicOperator)); } } else { Feng.Search.SimpleExpression ce = se as Feng.Search.SimpleExpression; string s = ce.Values.ToString(); if (s[0] == '%' && s[s.Length - 1] == '%') { string s1 = s.Substring(1, s.Length - 2); if (dict.ContainsKey(s1)) { ce.Values = dict[s1]; } else { ce = null; } } return(ce); } }