private static DboCommand GetCommandSelect(string selectionList, Expression predicate, TableDefinition tabledef = null)
        {
            var _cmdText = selectionList;

            var _where         = predicate;
            var _nameAndValues = new Dictionary <string, object>();
            //var _argNames = new List<string>();
            //var _argValues = new List<object>();

            CompileResult _w = null;

            if (_where != null)
            {
                _w = CompileResult.CompileExpr(_where, /*_argNames, _argValues,*/ _nameAndValues, TableDefinition.GetTableDefinition(typeof(T)).DefaultDataFunction.PrefixParameter, ObjectName);
            }

            if (_w != null)
            {
                if (tabledef != null)
                {
                    _cmdText += "\r\nwhere " + tabledef.ReplaceTableAlias(_w.CommandText, tabledef);
                }
                else
                {
                    _cmdText += "\r\nwhere " + _w.CommandText;
                }
            }

            return(new DboCommand(ObjectName, _cmdText, /*_argNames.ToArray(), _argValues.ToArray()*/ _nameAndValues));
        }
        private static DboCommand GetCommandSelect(string selectionList, Expression predicate, TableDefinition tabledef = null)
        {
            var _cmdText = selectionList;

            var _where         = predicate;
            var _nameAndValues = new Dictionary <string, object>();

            CompileResult _w = null;

            if (_where != null)
            {
                _w = CompileResult.CompileExpr(_where, _nameAndValues, TableDefinition.GetTableDefinition(typeof(T)).DefaultDataFunction.PrefixParameter, ObjectName);
            }

            if (_w != null)
            {
                if (tabledef != null)
                {
                    _cmdText += "\r\nwhere " + tabledef.ReplaceTableAlias(_w.CommandText, tabledef);
                }
                else
                {
                    _cmdText += "\r\nwhere " + _w.CommandText;
                }
            }

            // caso os join tenham algum filtro, inserimos ele neste momento
            var _joinDefs = TableDefinition.GetTableDefinition(typeof(T)).JoinFields.Select(j => j.Value);

            foreach (var _joinDef in _joinDefs)
            {
                foreach (var _parameter in _joinDef.GetFilterParameters())
                {
                    _nameAndValues.Add(_parameter.Key, _parameter.Value);
                }
            }

            return(new DboCommand(ObjectName, _cmdText, _nameAndValues));
        }