/// <summary>
        /// 获取跨库查询所需的表达式
        /// </summary>
        /// <returns></returns>
        protected override DisPageEntity <LogEntity> GetDisPageEntity(LogEntityParams paramz)
        {
            DisPageEntity <LogEntity> disPageEntity = new DisPageEntity <LogEntity>();
            LogEntityOrderBy          orderBy       = paramz.orderByAsc;

            if (orderBy != null)
            {
                disPageEntity.OrderType = true;
                if (orderBy.id)
                {
                    disPageEntity.OrderCol     = a => a.Id;
                    disPageEntity.OrderColLazy = a => a.Id;
                    return(disPageEntity);
                }
                if (orderBy.createDate)
                {
                    disPageEntity.OrderCol     = a => a.CreateDate;
                    disPageEntity.OrderColLazy = a => a.CreateDate;
                    return(disPageEntity);
                }
                if (orderBy.level)
                {
                    disPageEntity.OrderCol     = a => a.Level;
                    disPageEntity.OrderColLazy = a => a.Level;
                    return(disPageEntity);
                }
                if (orderBy.threadNo)
                {
                    disPageEntity.OrderCol     = a => a.ThreadNo;
                    disPageEntity.OrderColLazy = a => a.ThreadNo;
                    return(disPageEntity);
                }
                if (orderBy.message)
                {
                    disPageEntity.OrderCol     = a => a.Message;
                    disPageEntity.OrderColLazy = a => a.Message;
                    return(disPageEntity);
                }
                if (orderBy.projectName)
                {
                    disPageEntity.OrderCol     = a => a.ProjectName;
                    disPageEntity.OrderColLazy = a => a.ProjectName;
                    return(disPageEntity);
                }
                if (orderBy.typeName)
                {
                    disPageEntity.OrderCol     = a => a.TypeName;
                    disPageEntity.OrderColLazy = a => a.TypeName;
                    return(disPageEntity);
                }
                if (orderBy.funcName)
                {
                    disPageEntity.OrderCol     = a => a.FuncName;
                    disPageEntity.OrderColLazy = a => a.FuncName;
                    return(disPageEntity);
                }
                if (orderBy.exception)
                {
                    disPageEntity.OrderCol     = a => a.Exception;
                    disPageEntity.OrderColLazy = a => a.Exception;
                    return(disPageEntity);
                }
            }
            disPageEntity.OrderType = false;
            orderBy = paramz.orderByDesc;
            if (orderBy != null)
            {
                if (orderBy.id)
                {
                    disPageEntity.OrderCol     = a => a.Id;
                    disPageEntity.OrderColLazy = a => a.Id;
                    return(disPageEntity);
                }
                else
                if (orderBy.createDate)
                {
                    disPageEntity.OrderCol     = a => a.CreateDate;
                    disPageEntity.OrderColLazy = a => a.CreateDate;
                    return(disPageEntity);
                }
                else
                if (orderBy.level)
                {
                    disPageEntity.OrderCol     = a => a.Level;
                    disPageEntity.OrderColLazy = a => a.Level;
                    return(disPageEntity);
                }
                else
                if (orderBy.threadNo)
                {
                    disPageEntity.OrderCol     = a => a.ThreadNo;
                    disPageEntity.OrderColLazy = a => a.ThreadNo;
                    return(disPageEntity);
                }
                else
                if (orderBy.message)
                {
                    disPageEntity.OrderCol     = a => a.Message;
                    disPageEntity.OrderColLazy = a => a.Message;
                    return(disPageEntity);
                }
                else
                if (orderBy.projectName)
                {
                    disPageEntity.OrderCol     = a => a.ProjectName;
                    disPageEntity.OrderColLazy = a => a.ProjectName;
                    return(disPageEntity);
                }
                else
                if (orderBy.typeName)
                {
                    disPageEntity.OrderCol     = a => a.TypeName;
                    disPageEntity.OrderColLazy = a => a.TypeName;
                    return(disPageEntity);
                }
                else
                if (orderBy.funcName)
                {
                    disPageEntity.OrderCol     = a => a.FuncName;
                    disPageEntity.OrderColLazy = a => a.FuncName;
                    return(disPageEntity);
                }
                else
                if (orderBy.exception)
                {
                    disPageEntity.OrderCol     = a => a.Exception;
                    disPageEntity.OrderColLazy = a => a.Exception;
                    return(disPageEntity);
                }
                else
                {
                    disPageEntity.OrderCol     = a => a.Id;
                    disPageEntity.OrderColLazy = a => a.Id;
                    return(disPageEntity);
                }
            }
            else
            {
                disPageEntity.OrderCol     = a => a.Id;
                disPageEntity.OrderColLazy = a => a.Id;
                return(disPageEntity);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 获取跨库查询所需的表达式
        /// </summary>
        /// <returns></returns>
        protected override DisPageEntity <GlobalVariable> GetDisPageEntity(GlobalVariableParams paramz)
        {
            DisPageEntity <GlobalVariable> disPageEntity = new DisPageEntity <GlobalVariable>();

            disPageEntity.InCondition = (entities) =>
            {
                List <long?> keys = entities.Select(a => a.Id).ToList();
                return(a => keys.Contains(a.Id));
            };
            GlobalVariableOrderBy orderBy = paramz.orderByAsc;

            if (orderBy != null)
            {
                disPageEntity.OrderType = true;
                if (orderBy.Id)
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.VarSortIndex)
                {
                    disPageEntity.OrderCol           = a => a.VarSortIndex;
                    disPageEntity.OrderColLazy       = a => a.VarSortIndex;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarSortIndex = a.VarSortIndex
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarSortIndex) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarSortIndex) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarSortIndex) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarSortIndex) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.VarRemark)
                {
                    disPageEntity.OrderCol           = a => a.VarRemark;
                    disPageEntity.OrderColLazy       = a => a.VarRemark;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarRemark = a.VarRemark
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarRemark) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarRemark) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarRemark) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarRemark) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.VarName)
                {
                    disPageEntity.OrderCol           = a => a.VarName;
                    disPageEntity.OrderColLazy       = a => a.VarName;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarName = a.VarName
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarName) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarName) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarName) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarName) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.VarValue)
                {
                    disPageEntity.OrderCol           = a => a.VarValue;
                    disPageEntity.OrderColLazy       = a => a.VarValue;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarValue = a.VarValue
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarValue) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarValue) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarValue) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarValue) >= 0;
                    return(disPageEntity);
                }
            }
            disPageEntity.OrderType = false;
            orderBy = paramz.orderByDesc;
            if (orderBy != null)
            {
                if (orderBy.Id)
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.VarSortIndex)
                {
                    disPageEntity.OrderCol           = a => a.VarSortIndex;
                    disPageEntity.OrderColLazy       = a => a.VarSortIndex;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarSortIndex = a.VarSortIndex
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarSortIndex) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarSortIndex) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarSortIndex) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarSortIndex) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.VarRemark)
                {
                    disPageEntity.OrderCol           = a => a.VarRemark;
                    disPageEntity.OrderColLazy       = a => a.VarRemark;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarRemark = a.VarRemark
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarRemark) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarRemark) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarRemark) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarRemark) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.VarName)
                {
                    disPageEntity.OrderCol           = a => a.VarName;
                    disPageEntity.OrderColLazy       = a => a.VarName;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarName = a.VarName
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarName) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarName) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarName) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarName) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.VarValue)
                {
                    disPageEntity.OrderCol           = a => a.VarValue;
                    disPageEntity.OrderColLazy       = a => a.VarValue;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id, VarValue = a.VarValue
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.VarValue) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.VarValue) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.VarValue) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.VarValue) >= 0;
                    return(disPageEntity);
                }
                else
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
            }
            else
            {
                disPageEntity.OrderCol           = a => a.Id;
                disPageEntity.OrderColLazy       = a => a.Id;
                disPageEntity.OrderColAndKeyLazy = a => new GlobalVariable {
                    Id = a.Id
                };
                disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                return(disPageEntity);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 获取跨库查询所需的表达式
        /// </summary>
        /// <returns></returns>
        protected override DisPageEntity <HeartbeatEntity> GetDisPageEntity(HeartbeatEntityParams paramz)
        {
            DisPageEntity <HeartbeatEntity> disPageEntity = new DisPageEntity <HeartbeatEntity>();

            disPageEntity.InCondition = (entities) =>
            {
                List <long?> keys = entities.Select(a => a.Id).ToList();
                return(a => keys.Contains(a.Id));
            };
            HeartbeatEntityOrderBy orderBy = paramz.orderByAsc;

            if (orderBy != null)
            {
                disPageEntity.OrderType = true;
                if (orderBy.Id)
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.LastHeartbeatTime)
                {
                    disPageEntity.OrderCol           = a => a.LastHeartbeatTime;
                    disPageEntity.OrderColLazy       = a => a.LastHeartbeatTime;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, LastHeartbeatTime = a.LastHeartbeatTime
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.LastHeartbeatTime) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.LastHeartbeatTime) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.LastHeartbeatTime) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.LastHeartbeatTime) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.RobotMac)
                {
                    disPageEntity.OrderCol           = a => a.RobotMac;
                    disPageEntity.OrderColLazy       = a => a.RobotMac;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, RobotMac = a.RobotMac
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.RobotMac) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.RobotMac) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.RobotMac) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.RobotMac) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.Remark)
                {
                    disPageEntity.OrderCol           = a => a.Remark;
                    disPageEntity.OrderColLazy       = a => a.Remark;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, Remark = a.Remark
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Remark) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Remark) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Remark) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Remark) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.ExtendField)
                {
                    disPageEntity.OrderCol           = a => a.ExtendField;
                    disPageEntity.OrderColLazy       = a => a.ExtendField;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, ExtendField = a.ExtendField
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.ExtendField) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.ExtendField) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.ExtendField) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.ExtendField) >= 0;
                    return(disPageEntity);
                }
                if (orderBy.MonitorServer)
                {
                    disPageEntity.OrderCol           = a => a.MonitorServer;
                    disPageEntity.OrderColLazy       = a => a.MonitorServer;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, MonitorServer = a.MonitorServer
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.MonitorServer) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.MonitorServer) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.MonitorServer) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.MonitorServer) >= 0;
                    return(disPageEntity);
                }
            }
            disPageEntity.OrderType = false;
            orderBy = paramz.orderByDesc;
            if (orderBy != null)
            {
                if (orderBy.Id)
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.LastHeartbeatTime)
                {
                    disPageEntity.OrderCol           = a => a.LastHeartbeatTime;
                    disPageEntity.OrderColLazy       = a => a.LastHeartbeatTime;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, LastHeartbeatTime = a.LastHeartbeatTime
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.LastHeartbeatTime) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.LastHeartbeatTime) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.LastHeartbeatTime) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.LastHeartbeatTime) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.RobotMac)
                {
                    disPageEntity.OrderCol           = a => a.RobotMac;
                    disPageEntity.OrderColLazy       = a => a.RobotMac;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, RobotMac = a.RobotMac
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.RobotMac) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.RobotMac) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.RobotMac) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.RobotMac) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.Remark)
                {
                    disPageEntity.OrderCol           = a => a.Remark;
                    disPageEntity.OrderColLazy       = a => a.Remark;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, Remark = a.Remark
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Remark) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Remark) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Remark) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Remark) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.ExtendField)
                {
                    disPageEntity.OrderCol           = a => a.ExtendField;
                    disPageEntity.OrderColLazy       = a => a.ExtendField;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, ExtendField = a.ExtendField
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.ExtendField) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.ExtendField) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.ExtendField) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.ExtendField) >= 0;
                    return(disPageEntity);
                }
                else
                if (orderBy.MonitorServer)
                {
                    disPageEntity.OrderCol           = a => a.MonitorServer;
                    disPageEntity.OrderColLazy       = a => a.MonitorServer;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id, MonitorServer = a.MonitorServer
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.MonitorServer) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.MonitorServer) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.MonitorServer) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.MonitorServer) >= 0;
                    return(disPageEntity);
                }
                else
                {
                    disPageEntity.OrderCol           = a => a.Id;
                    disPageEntity.OrderColLazy       = a => a.Id;
                    disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                        Id = a.Id
                    };
                    disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                    disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                    disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                    disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                    return(disPageEntity);
                }
            }
            else
            {
                disPageEntity.OrderCol           = a => a.Id;
                disPageEntity.OrderColLazy       = a => a.Id;
                disPageEntity.OrderColAndKeyLazy = a => new HeartbeatEntity {
                    Id = a.Id
                };
                disPageEntity.GreatThan   = (val) => a => val.CompareTo(a.Id) < 0;
                disPageEntity.GreatEqThan = (val) => a => val.CompareTo(a.Id) <= 0;
                disPageEntity.LessThan    = (val) => a => val.CompareTo(a.Id) > 0;
                disPageEntity.LessEqThan  = (val) => a => val.CompareTo(a.Id) >= 0;
                return(disPageEntity);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 普通的分页查询功能,pageSize不宜过大,如果pageSize大于1000,使用:BigPageList
        /// </summary>
        /// <param name="pageIndex">查询页码</param>
        /// <param name="pageSize">每页显示数据量</param>
        /// <param name="eqArgs">查询参数,不为null时会作为查询参数</param>
        /// <param name="neqArgs">不等查询参数,不为null时会作为不等查询参数</param>
        /// <returns>返回分页查询结果</returns>
        public MyPagedList <TEntity> PageList(int pageIndex = 1, int pageSize = 20, TParams eqArgs = null, TParams neqArgs = null)
        {
            if (pageIndex <= 0)
            {
                pageIndex = 1;
            }
            if (pageSize > 100)
            {
                pageSize = 100;
            }
            else if (pageSize <= 0)
            {
                pageSize = 20;
            }
            List <BaseDbContext> dbContexts = CreateAllDbContext();

            //单个数据源的分页
            if (dbContexts.Count == 1)
            {
                using (DbContext dbContext = dbContexts[0])
                {
                    IQueryable <TEntity> query = Query(dbContext.Set <TEntity>().AsNoTracking().AsQueryable(), eqArgs, neqArgs);
                    return(query.ToMyPagedList(pageIndex, pageSize));
                }
            }
            //多个数据源的分页(需改成按比例)
            else if (dbContexts.Count > 1)
            {
                int        sumSkipCount = (pageIndex - 1) * pageSize;                                //期望的总跳过数据量
                int        totalCount   = 0;                                                         //符合条件的总数据量
                List <int> counts       = new List <int>();                                          //各个数据源的符合条件数据
                List <IQueryable <TEntity> > baseDbContextList = new List <IQueryable <TEntity> >(); //含有符合条件数据的数据库
                for (int i = 0, count, len = dbContexts.Count; i < len; i++)
                {
                    IQueryable <TEntity> query = Query(dbContexts[i].Set <TEntity>().AsNoTracking().AsQueryable(), eqArgs, neqArgs);
                    count = query.Count();
                    if (count > 0)
                    {
                        totalCount += count;
                        counts.Add(count);
                        baseDbContextList.Add(query);
                    }
                }
                DisPageEntity <TEntity> disPageEntity = GetDisPageEntity(eqArgs);
                List <IComparable>      sortList      = new List <IComparable>();
                for (int i = 0, len = baseDbContextList.Count; i < len; i++)
                {
                    var comparable = baseDbContextList[i].Select(disPageEntity.OrderColLazy).Skip(counts[i] * sumSkipCount / totalCount).Take(1).FirstOrDefault();
                    if (comparable != null)
                    {
                        sortList.Add(comparable);
                    }
                }
                sortList.Sort();
                IComparable baseVal     = sortList[disPageEntity.OrderType ? 0 : sortList.Count - 1]; //得到基准值
                int         baseValSkip = 0;                                                          //基准值跳过数据量
                foreach (var baseDbContext in baseDbContextList)
                {
                    baseValSkip += baseDbContext.Where(disPageEntity.OrderType ? disPageEntity.LessThan(baseVal) : disPageEntity.GreatThan(baseVal)).Count();
                }
                int            restSkipCount = sumSkipCount - baseValSkip; //剩余需要跳过的数据量
                List <TEntity> keyOrderList  = new List <TEntity>();
                foreach (var baseDbContext in baseDbContextList)
                {
                    var query = baseDbContext.Where(disPageEntity.OrderType ? disPageEntity.GreatEqThan(baseVal) : disPageEntity.LessEqThan(baseVal));
                    keyOrderList.AddRange(query.Select(disPageEntity.OrderColAndKeyLazy).Take(restSkipCount + pageSize).ToList());
                }
                if (disPageEntity.OrderType)
                {
                    keyOrderList = keyOrderList.OrderBy(disPageEntity.OrderCol).Skip(restSkipCount).Take(pageSize).ToList();
                }
                else
                {
                    keyOrderList = keyOrderList.OrderByDescending(disPageEntity.OrderCol).Skip(restSkipCount).Take(pageSize).ToList();
                }
                List <TEntity> entities = new List <TEntity>();
                foreach (var baseDbContext in baseDbContextList)
                {
                    entities.AddRange(baseDbContext.Where(disPageEntity.InCondition(entities)).ToList());
                }
                return(new MyPagedList <TEntity>
                {
                    PageDataList = entities.OrderBy(disPageEntity.OrderCol).ToList(),
                    CurrentPageIndex = pageIndex,
                    EndItemIndex = pageIndex * pageSize + entities.Count,
                    PageSize = pageSize,
                    StartItemIndex = pageIndex * pageSize + 1,
                    TotalItemCount = totalCount,
                    TotalPageCount = (totalCount - totalCount % pageSize) / pageSize + 1
                });
            }
            throw new Exception("没有找到数据源,请确保“CreateAllDbContext”方法正确实现。");
        }