EF利用Expression<Func<T, bool>> conditions构造多条件表达式,利用linq匹配给定ID集合与另一个集合中的数据

/// <summary>
        /// 查询分页
        /// </summary>
        /// <param name="Params"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("Page")]
        public IEnumerable<TBL_MouldPosition> Page([FromBody] Q_Base Params)
        {
            int totalCount = 0;
            int pageId = Params.PageIndex;
            int pageSize = Params.PageSize;

            Expression<Func<TBL_MouldPosition, bool>> condition = null;
            Expression<Func<TBL_MouldPosition, bool>> expr = null;
            condition = a => a.DelFlag == (int)DelFlag.No;
            if (!string.IsNullOrEmpty(Params.Name))//模具名称
            {
                var list = UnitOfWork.GetQuery<MST_MouldBase>().Where(t => t.MouldName.Contains(Params.Name.Trim())).Select(t=>t.Id);//根据模具名称模糊查询
                expr = a => list.Contains(a.MouldBaseId);
                condition = condition.And(expr);
            }
            if (!string.IsNullOrEmpty(Params.Code))//仓位名称
            {
                var list = UnitOfWork.GetQuery<MST_BaseItemEntity>().Where(t => t.Value.Contains(Params.Code.Trim())).Select(t => t.Id);//根据仓位名称模糊查询
                expr = a => list.Contains(a.BaseItemEntityId);
                condition = condition.And(expr);
            }

            IEnumerable<TBL_MouldPosition> baseForms = UnitOfWork.GetByPage<TBL_MouldPosition, double>(out totalCount, pageSize, pageId, a => a.OrderIndex, false, condition);
            if (baseForms != null && baseForms.Any())
            {
                var entityList = UnitOfWork.GetQuery<MST_BaseItemEntity>().Where(t => t.DelFlag == (int)DelFlag.No);//获取所有模具类别           
                var mouldBaseList = UnitOfWork.GetQuery<MST_MouldBase>().Where(t => t.DelFlag == (int)DelFlag.No);//获取所有模具        
                foreach (TBL_MouldPosition item in baseForms)//遍历获取大类名称、类别名称
                {
                    #region 获取模具信息
                    if (!string.IsNullOrEmpty(item.MouldBaseId) && mouldBaseList != null && mouldBaseList.Any())//获取模具信息
                    {
                        var mouldItem = mouldBaseList.FirstOrDefault(t => t.Id == item.MouldBaseId);
                        if (mouldItem != null)
                        {
                            if (!string.IsNullOrEmpty(mouldItem.K3FName))//物料名称
                            {
                                item.K3FName = mouldItem.K3FName;
                            }
                            if (!string.IsNullOrEmpty(mouldItem.K3FNumber))//物料编码
                            {
                                item.K3FNumber = mouldItem.K3FNumber;
                            }
                            if (!string.IsNullOrEmpty(mouldItem.MouldCategory))//大类名称
                            {
                                item.MouldCategoryName = entityList.FirstOrDefault(t => t.Id == mouldItem.MouldCategory) != null ? entityList.FirstOrDefault(t => t.Id == mouldItem.MouldCategory).Value : "";
                            }
                            if (!string.IsNullOrEmpty(mouldItem.MouldType))//类别名称
                            {
                                item.MouldTypeName = entityList.FirstOrDefault(t => t.Id == mouldItem.MouldType) != null ? entityList.FirstOrDefault(t => t.Id == mouldItem.MouldType).Value : "";
                            }
                            if (!string.IsNullOrEmpty(mouldItem.MouldNo))//模具编号名称
                            {
                                //DataTable dtK3 = ComLogic.ICItemData();
                                item.MouldNoName = mouldItem.MouldNo;
                            }
                            item.MouldName = mouldItem.MouldName;
                        }
                    }
                    #endregion

                    #region 获取仓位类别信息
                    if (!string.IsNullOrEmpty(item.BaseItemEntityId) && entityList != null && entityList.Any())
                    {
                        var entity = entityList.FirstOrDefault(t => t.Id == item.BaseItemEntityId);
                        if (entity != null)
                        {
                            item.MouldPositionName = entity.Value;
                        }
                    }
                    #endregion
                }
            }
            return baseForms;
        }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值