示例#1
0
        /// <summary>
        /// Not Exists查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="NotExistsT"></typeparam>
        /// <param name="filter"></param>
        /// <param name="notExistsFilter"></param>
        /// <param name="fields"></param>
        /// <returns></returns>
        public static List <T> SelectNotExists <T, NotExistsT>(Expression <Func <T, NotExistsT, bool> > notExistsFilter, Expression <Func <T, bool> > filter = null, params Expression <Func <T, object> >[] fields)
        {
            string strSql   = SelectScript(filter, null, fields);
            var    model    = Activator.CreateInstance <T>();
            Type   t        = model.GetType(); //获得该类的Type
            string tbName   = GetTableName(t); //表名
            string nickName = " as " + notExistsFilter.Parameters[0];

            strSql = strSql.Replace(tbName, tbName + nickName);
            if (strSql.IndexOf(" where ") > 0)
            {
                strSql += " and " + NotExists(notExistsFilter);
            }
            else
            {
                strSql += " where " + NotExists(notExistsFilter);
            }

            List <T> list = new List <T>();
            var      dt   = DbHelperSQL.Query(strSql.ToString()).Tables[0];

            list = ModelUtil.DataTableParse <T>(dt);

            return(list);
        }
示例#2
0
        /// <summary>
        /// 根据条件查询
        /// </summary>
        /// <typeparam name="T">表实体类</typeparam>
        /// <param name="filter">查询条件:lambda条件过滤表达式</param>
        /// <param name="order">排序表达式</param>
        /// <param name="fields">查询字段:lambda字段表达式【可多组】</param>
        /// <returns>列表实体</returns>
        public static List <T> Select <T>(Expression <Func <T, bool> > filter = null, OrderBy <T> order = null, params Expression <Func <T, object> >[] fields)
        {
            string strWhere  = string.Empty;
            string strFields = string.Empty;
            string orderBy   = string.Empty;

            if (filter != null)
            {
                strWhere = LinqCompile.GetWhereByLambda(filter, DataBaseType.SqlServer);
            }

            if (order != null)
            {
                orderBy = OrderByUtil.GetOrderBy <T>(order.GetOrderByList());
            }

            foreach (var f in fields)
            {
                var fieldName = ExpressionField.GetFieldName <T>(f);
                strFields = strFields + "," + fieldName;
            }
            if (string.IsNullOrEmpty(strFields))
            {
                strFields = "*";
            }
            else
            {
                strFields = strFields.Trim(',');
            }


            List <T>      list   = new List <T>();
            StringBuilder strSql = new StringBuilder();
            var           model  = Activator.CreateInstance <T>();
            Type          t      = model.GetType(); //获得该类的Type
            string        tbName = GetTableName(t); //表名

            strSql.AppendFormat("select {0} ", strFields);

            strSql.AppendFormat(" from {0} ", tbName);
            if (!string.IsNullOrEmpty(strWhere))
            {
                strSql.AppendFormat(" where {0} ", strWhere);
            }
            if (!string.IsNullOrEmpty(orderBy))
            {
                strSql.Append(orderBy);
            }

            var dt = DbHelperSQL.Query(strSql.ToString(), null).Tables[0];

            list = ModelUtil.DataTableParse <T>(dt);

            return(list);
        }
示例#3
0
        /// <summary>
        /// 多表联合查询(left join)
        /// </summary>
        /// <typeparam name="T">返回的数据实体类型</typeparam>
        /// <typeparam name="T1">表1</typeparam>
        /// <typeparam name="T2">表2</typeparam>
        /// <typeparam name="T3">表3</typeparam>
        /// <typeparam name="T4">表4</typeparam>
        /// <typeparam name="T5">表5</typeparam>
        /// <typeparam name="T6">表6</typeparam>
        /// <param name="joinExpression">联接条件</param>
        /// <param name="filter">查询条件</param>
        /// <param name="order">排序</param>
        /// <param name="fields">查询字段</param>
        /// <returns>数据实体列表</returns>
        public static List <T> Join <T, T1, T2, T3, T4, T5, T6>(Expression <Func <T1, T2, T3, T4, T5, T6, bool> > joinExpression, Expression <Func <T1, T2, T3, T4, T5, T6, bool> > filter = null, OrderBy <T> order = null,
                                                                params Expression <Func <T1, T2, T3, T4, T5, T6, object> >[] fields)
        {
            string   strSql = JoinScript(joinExpression, filter, order, fields);
            List <T> list   = new List <T>();
            var      dt     = DbHelperSQL.Query(strSql).Tables[0];

            list = ModelUtil.DataTableParse <T>(dt);

            return(list);
        }
示例#4
0
        /// <summary>
        /// 根据条件查询
        /// </summary>
        /// <typeparam name="T">表实体类</typeparam>
        /// <param name="filter">查询条件:lambda条件过滤表达式</param>
        /// <param name="order">排序表达式</param>
        /// <param name="fields">查询字段:lambda字段表达式【可多组】</param>
        /// <returns>列表实体</returns>
        public static List <T> Select <T>(Expression <Func <T, bool> > filter = null, OrderBy <T> order = null, params Expression <Func <T, object> >[] fields)
        {
            string strSql = SelectScript(filter, order, fields);

            List <T> list = new List <T>();
            var      dt   = DbHelperSQL.Query(strSql.ToString()).Tables[0];

            list = ModelUtil.DataTableParse <T>(dt);

            return(list);
        }
示例#5
0
        /// <summary>
        /// 根据条件查询一条记录
        /// </summary>
        /// <typeparam name="T">表实体类</typeparam>
        /// <param name="filter">查询条件:lambda条件过滤表达式</param>
        /// <param name="order">排序表达式</param>
        /// <param name="fields">查询字段:lambda字段表达式【可多组】</param>
        /// <returns>列表实体</returns>
        public static T SelectSingleRecord <T>(Expression <Func <T, bool> > filter = null, OrderBy <T> order = null, params Expression <Func <T, object> >[] fields)
        {
            string strSql = SelectScript(filter, order, fields);

            List <T> list = new List <T>();
            var      dt   = DbHelperSQL.Query(strSql.ToString()).Tables[0];

            list = ModelUtil.DataTableParse <T>(dt);

            if (list != null && list.Count > 0)
            {
                return(list[0]);
            }
            else
            {
                return(default(T));
            }
        }