private static List <Comparison> _CreateWhereConditions(string strWhere, TableContext table) { List <Comparison> lstReturn = new List <Comparison>(); if (!string.IsNullOrWhiteSpace(strWhere)) { strWhere = strWhere.Substring(6); string[] astrClauses = strWhere.SplitSeeingSingleQuotesAndBackticks("AND", false).ToArray(); // TODO: Handle NOTs, duh. for (int i = 0; i < astrClauses.Length; i++) { Comparison comparison = null; string strClause = astrClauses[i].Trim(); if (MainClass.bDebug) { Console.WriteLine("Where clause #" + i + " " + strClause); } if (strClause.SplitSeeingSingleQuotesAndBackticks(" IN ", false).Count > 1) { CompoundComparison inClause = new CompoundComparison(GROUP_TYPE.OR); if (MainClass.bDebug) { Console.WriteLine("IN clause: " + strClause); } string strField = strClause.Substring(0, strClause.IndexOf(' ')); string strIn = strClause.Substring(strClause.IndexOf('(') + 1, strClause.LastIndexOf(')') - strClause.IndexOf('(') - 1); string[] astrInVals = strIn.Split(','); foreach (string strInVal in astrInVals) { string strFakeWhere = strField + " = " + strInVal; inClause.lstComparisons.Add(WhereProcessor._CreateComparison(strFakeWhere, table)); } lstReturn.Add(inClause); } else { comparison = WhereProcessor._CreateComparison(strClause, table); if (null != comparison) { lstReturn.Add(comparison); } else { Console.WriteLine("Uncaptured WHERE clause type: " + strClause); } } } } return(lstReturn); }
private static List<Comparison> _CreateWhereConditions(string strWhere, TableContext table) { List<Comparison> lstReturn = new List<Comparison>(); if (!string.IsNullOrWhiteSpace(strWhere)) { strWhere = strWhere.Substring(6); string[] astrClauses = strWhere.SplitSeeingSingleQuotesAndBackticks("AND", false).ToArray(); // TODO: Handle NOTs, duh. for (int i = 0; i < astrClauses.Length; i++) { Comparison comparison = null; string strClause = astrClauses[i].Trim(); if (MainClass.bDebug) Console.WriteLine("Where clause #" + i + " " + strClause); if (strClause.SplitSeeingSingleQuotesAndBackticks(" IN ", false).Count > 1) { CompoundComparison inClause = new CompoundComparison(GROUP_TYPE.OR); if (MainClass.bDebug) Console.WriteLine("IN clause: " + strClause); string strField = strClause.Substring(0, strClause.IndexOf(' ')); string strIn = strClause.Substring(strClause.IndexOf('(') + 1, strClause.LastIndexOf(')') - strClause.IndexOf('(') - 1); string[] astrInVals = strIn.Split(','); foreach (string strInVal in astrInVals) { string strFakeWhere = strField + " = " + strInVal; inClause.lstComparisons.Add(WhereProcessor._CreateComparison(strFakeWhere, table)); } lstReturn.Add(inClause); } else { comparison = WhereProcessor._CreateComparison(strClause, table); if (null != comparison) { lstReturn.Add(comparison); } else { Console.WriteLine("Uncaptured WHERE clause type: " + strClause); } } } } return lstReturn; }