Beispiel #1
0
        /// <summary>
        /// 获取指定条件的T_FB_CHARGEAPPLYMASTER信息
        /// </summary>
        /// <param name="strOrderBy">排序字段</param>
        /// <param name="strFilter">查询语句</param>
        /// <param name="objArgs">查询参数集合</param>
        /// <returns>返回T_FB_CHARGEAPPLYMASTER信息</returns>
        public IQueryable <T_FB_CHARGEAPPLYMASTER> GetChargeApplyMasterRdListByMultSearch(string strOrderBy, string strFilter, string checkState, string userID, List <string> guidStringList, params object[] objArgs)
        {
            int chkState = 5;
            var q        = from v in GetObjects()
                           select v;

            List <object> queryParas = new List <object>();

            if (objArgs != null)
            {
                queryParas.AddRange(objArgs);
            }
            //UtilityClass.SetOrganizationFilter(ref strFilter, ref queryParas, userID, "T_FB_CHARGEAPPLYMASTER");
            if (guidStringList == null)
            {
                if (!(strFilter.IndexOf("OWNERID") > -1))
                {
                    UtilityClass.SetOrganizationFilter(ref strFilter, ref queryParas, userID, "T_FB_CHARGEAPPLYMASTER");
                }
            }

            if (checkState == "4")
            {
                if (guidStringList != null)
                {
                    q = from ent in q
                        where guidStringList.Contains(ent.CHARGEAPPLYMASTERID)
                        select ent;
                }
            }
            else
            {
                if (checkState != "5")
                {
                    chkState = int.Parse(checkState);
                    q        = q.Where(ent => ent.CHECKSTATES == chkState);
                }
            }

            if (!string.IsNullOrEmpty(strFilter))
            {
                q = q.Where(strFilter, queryParas.ToArray());
            }
            q = q.OrderBy(strOrderBy);

            return(q);
        }
Beispiel #2
0
        /// <summary>
        /// 用于实体Grid中显示数据的分页查询
        /// </summary>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页显示条数</param>
        /// <param name="sort">排序字段</param>
        /// <param name="filterString">过滤条件</param>
        /// <param name="paras">过滤条件中的参数值</param>
        /// <param name="pageCount">返回总页数</param>
        /// <returns>查询结果集</returns>
        public IQueryable <TEntity> QueryWithPaging(int pageIndex, int pageSize, string sort, string filterString, IList <object> paras, ref int pageCount, string userID, string entityName)
        {
            #region 实现动态查询的两个例子
            //方式一:用Dynamic Linq 查询
            //string[] paras = new string[2];
            //paras[0] = "EmpCode3";
            //paras[1] = "EmpName5";
            //IQueryable<T_HR_EMPLOYEE> ents = dal.GetTable().Where("EMPLOYEECODE==@0 or EMPLOYEENAME==@1 ", paras).OrderBy(sort).Skip((pageIndex - 1) * pageSize).Take(pageSize);
            //return ents;


            //方式二:用原始的DynamicQueryable查询
            //IQueryable<T_HR_EMPLOYEE> ents = dal.GetTable();
            //ParameterExpression para = Expression.Parameter(typeof(T_HR_EMPLOYEE), "emp");

            ////c.City=="London"
            //Expression left = Expression.Property(para, typeof(T_HR_EMPLOYEE).GetProperty("EMPLOYEECODE"));
            //Expression right = Expression.Constant("22222");
            //Expression filter = Expression.Equal(left, right);

            //Expression pred = Expression.Lambda(filter, para);
            ////Where(c=>c.City=="London")
            //Expression expr = Expression.Call(typeof(Queryable), "Where",
            //    new Type[] { typeof(T_HR_EMPLOYEE) },
            //    Expression.Constant(ents), pred);

            ////OrderBy(ContactName => ContactName)
            //MethodCallExpression orderByCallExpression = Expression.Call(
            //typeof(Queryable), "OrderBy",
            //new Type[] { typeof(T_HR_EMPLOYEE), typeof(string) },
            //expr,
            //Expression.Lambda(Expression.Property
            //(para, "EMPLOYEENAME"), para));

            ////生成动态查询
            //IQueryable<T_HR_EMPLOYEE> query = ents.AsQueryable()
            //    .Provider.CreateQuery<T_HR_EMPLOYEE>(orderByCallExpression);


            //int count = query.Count();
            //pageCount = count/pageSize;
            //int tmp = count % pageSize;
            //pageCount = pageCount + (tmp > 0 ? 1 : 0);

            //return query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
            #endregion


            List <object> queryParas = new List <object>();
            queryParas.AddRange(paras);
            UtilityClass.SetOrganizationFilter(ref filterString, ref queryParas, userID, entityName);
            IQueryable <TEntity> ents = dal.GetTable().ToList().AsQueryable();
            //IQueryable<TEntity> ents = dal.GetTable();
            if (!string.IsNullOrEmpty(filterString))
            {
                ents = ents.Where(filterString, queryParas.ToArray());
            }
            ents = ents.OrderBy(sort);
            ents = Utility.Pager <TEntity>(ents, pageIndex, pageSize, ref pageCount);
            return(ents);
        }