Example #1
0
        /// <summary>
        /// Gets the stringified query expression format of the current instance. A formatted string for field-operation-parameter will be
        /// conjuncted by the value of the <see cref="RepoDb.Enumerations.Conjunction"/> property.
        /// </summary>
        /// <param name="index">The parameter index for batch operation.</param>
        /// <param name="dbSetting">The currently in used <see cref="IDbSetting"/> object.</param>
        /// <returns>A stringified formatted-text of the current instance.</returns>
        public string GetString(int index,
                                IDbSetting dbSetting)
        {
            // Fix first the parameters
            Fix();

            // Variables
            var groupList   = new List <string>();
            var conjunction = Conjunction.GetText();
            var separator   = string.Concat(" ", conjunction, " ");

            // Check the instance fields
            var queryFields = QueryFields.AsList();

            if (queryFields?.Count > 0)
            {
                var fields = QueryFields
                             .Select(qf =>
                                     qf.AsFieldAndParameter(index, dbSetting)).Join(separator);
                groupList.Add(fields);
            }

            // Check the instance groups
            var queryGroups = QueryGroups.AsList();

            if (queryGroups?.Count > 0)
            {
                var groups = QueryGroups
                             .Select(qg => qg.GetString(index, dbSetting)).Join(separator);
                groupList.Add(groups);
            }

            // Return the value
            return(IsNot ? string.Concat("NOT (", groupList.Join(conjunction), ")") : string.Concat("(", groupList.Join(separator), ")"));
        }