private static IEnumerable<XObject> ConditionValues(WhereClauseInfo whereClause)
        {
            IEnumerable<XObject> conditionValues;

            if (whereClause.Values.Count == 1)
            {
                conditionValues = from whereClauseValue in whereClause.Values
                                  select new XAttribute("value", whereClauseValue);
            }
            else
            {
                conditionValues = from whereClauseValue in whereClause.Values
                                  select new XElement("value", whereClauseValue);

            }

            return conditionValues;
        }
        public static Dictionary<string, WhereClauseInfo> WhereClauseInfos(QuerySpecification querySpecification)
        {
            var whereClauseExpressions = WhereClauseExpressions(querySpecification);
            var whereClauseInfos = new Dictionary<string, WhereClauseInfo>();

            foreach (var whereClauseExpression in whereClauseExpressions)
            {
                var tableName = TableFromFullyQualifiedColumnName(WhereClauseColumn(whereClauseExpression), querySpecification);
                var columnName = ColumnFromFullyQualifiedColumnName(WhereClauseColumn(whereClauseExpression));
                var operatorAbbreviation = ExpressionComparisonPart(whereClauseExpression);
                var values = WhereClauseValues(whereClauseExpression);

                var whereClauseInfo = new WhereClauseInfo
                                          {
                                              TableName = tableName,
                                              ColumnName = columnName,
                                              OperatorAbbreviation = operatorAbbreviation,
                                              Values = values
                                          };
                whereClauseInfos.Add(whereClauseInfo.TableName + "." + whereClauseInfo.ColumnName, whereClauseInfo);
            }

            return whereClauseInfos;
        }