public async Task <IEnumerable <NameItem> > GetNameItemsAsync(string keyField, string nameField, string tableName, object whereParam = null, string orderBy = null, int count = 0)
        {
            if (!string.IsNullOrEmpty(orderBy))
            {
                orderBy = "ORDER BY " + orderBy;
            }
            string top = string.Empty;

            if (count > 0)
            {
                top = string.Format("top ({0})", count);
            }

            var whereAndParam = DapperExtension.GetWhereSqlAndParameters(whereParam);

            var sql = string.Format("select {0} [{1}] as Id ,[{2}] as Name from {3} where {4} {5}", top, keyField, nameField, tableName,
                                    whereAndParam.Item1, orderBy);

            using (var con = this.ConnectionFactory.OpenConnection())
            {
                var list = await con.QueryAsync <NameItem>(sql, whereAndParam.Item2);

                return(list.Distinct());
            }
        }
        public async Task <IEnumerable <SelectListItem> > GetSelectListAsync(string valueField, string textField, string tableName, object whereParam = null, string orderBy = null)
        {
            if (!string.IsNullOrEmpty(orderBy))
            {
                orderBy = "ORDER BY " + orderBy;
            }

            var whereAndParam = DapperExtension.GetWhereSqlAndParameters(whereParam);

            var sql = string.Format("select [{0}] as Value ,[{1}] as Text from {2} where {3} {4}", valueField, textField, tableName,
                                    whereAndParam.Item1, orderBy);

            IEnumerable <SelectListItem> list = null;

            using (var con = this.ConnectionFactory.OpenConnection())
            {
                list = await con.QueryAsync <SelectListItem>(sql, whereAndParam.Item2);
            }
            return(list);
        }