ef6 拼接where查询条件

发布时间 2023-07-13 14:04:11作者: 咖啡加点盐

Expression<Func<RecipeInfo, bool>> expression = t => true;
expression = expression.And(p => p.IsEfjective==0);
switch (type)
{
case 0:
expression = expression.And(p => p.FilePath.Contains(value));
//queru.Where(p => p.FilePath.Contains(value)) ;
break;
case 1:
expression = expression.And(p => p.Id == Convert.ToInt64(value));
break;
case 2:
expression = expression.And(p => p.DeviceId == Convert.ToInt64(value));
break;
case 3:
expression = expression.And(p => p.LayerId == Convert.ToInt64(value));
break;
case 100:
expression = expression.And(p => true);
break;
}
if (UnitId != 0)
{
expression = expression.And(p => p.UnitId == UnitId);
}
//List RecipeInfoListEntityList = new List();
RecipeInfoListEntity RecipeInfoListEntityList = new RecipeInfoListEntity();
var db= this.BaseRepository().DB.dbContext;
var RecipeInfoDB = db.Set();
var LayerDB = db.Set();
var DeviceDB = db.Set();
var UserDB = db.Set();
var UserDB2 = db.Set();

            var queru = from a in RecipeInfoDB.Where(expression)
                        join b in LayerDB on a.LayerId equals b.Id  
                        join c in DeviceDB on a.DeviceId equals c.Id
                        join e in UserDB on a.BaseCreatorId equals e.Id
                        join f in UserDB2 on a.BaseModifierId equals f.Id  orderby a.BaseCreateTime descending
                        select new RecipeInfoListEntity
                        {
                            Id = a.Id.Value,
                            Name = a.Name,
                            BaseModifierId = a.BaseModifierId,
                            BaseModifyTime = a.BaseModifyTime,
                            BaseCreatorId = a.BaseCreatorId,
                            BaseCreateTime = a.BaseCreateTime,
                            deviceName = c.Name,
                            deviceID = c.Id.ToString(),
                            TechniqueName = b.TechniqueName,
                            TechniqueId = b.Id.ToString(),
                            Tag = a.Tag,
                            Comment = a.Comment,
                            InspectionMode = a.InspectionMode.ToString(),
                            FilePath = a.FilePath,
                            Image = a.Image,
                            Revision = a.Revision,
                            Executable = a.Executable,
                            ModuleType = a.ModuleType.ToString(),
                            //UnitName = a.UnitName,
                            UnitId = a.UnitId,
                            WaferSize = a.WaferSize.ToString(),
                            BaseCreatorName = e.Name,
                            BaseModifierName = f.Name,
                            IndexNumber = b.IndexNumber,
                            Isupload = a.Isupload,
                            GrounpId = a.GrounpId.Value,
                            //isChecked = a.isChecked,
                            ImageMD5 = a.ImageMD5,
                            recipeInfo = new RecipeInfo(),
                            recipeInfoBaseEntity = new RecipeInfoBaseEntity(),
                            recipeName = a.Name
                        };
            //into temp
            //where temp.FilePath == "1" select temp;
            //expression = expression.And(t => t.AAA == 1);
            //expression = expression.And(t => t.BBB > 1);
            
            //queru.OrderBy(p=>p.BaseCreateTime);


            var joinfdatabase = await queru.ToListAsync();
            return joinfdatabase as List<RecipeInfoListEntity>;