在我们导出报表的时候,可能会遇到如:我在车辆表导出车辆信息表,但是车型信息不想显示ID,想显示车型名称,那么这个时候可能有人会说,直接if判断下不可以了。确实,if判断可以实现,但是如果用户新增一条车型信息呢?你是不是还得修改项目重新发布?所以使用if判断其实是不规范的。
下面我将为大家介绍自己遇到此类问题时的小方法:
第一种:
如:导出所有车辆信息数据,显示车型名称。那么我在车辆信息中肯定会有车型ID,这个时候我们可以通过查询车型表所有信息,然后通过for循环判断当前车辆的车型ID是否匹配,如果匹配则添加当前车型数据中的车型名称。具体代码如下:
//查询所有车型数据
Expression<Func<CarClassEntity, bool>> predicates = t => t.IsDeleted == false; List<CarClassEntity> carClasses = new CarClassService().GetCarClassExeclDate(predicates); for (int j = 0; j < carClasses.Count; j++) //循环判断 { if (cardate[i].CarClassId.ToString() == carClasses[j].Id.ToString()) //判断当前车辆信息的车辆ID跟哪个车型信息的ID匹配 { row.CreateCell(4).SetCellValue(carClasses[j].CarName); //匹配则添加当前车型信息的车型名称 } }
第二种:使用EF联表查询,直接查询出两张表的数据。具体代码如下,
/// <summary> /// 两表联查数据 /// </summary> /// <param name="carclass"></param> /// <param name="car"></param> /// <returns></returns> public List<CarInsureDto> GetCarLists(List<CarInsureEntity> carInsure, List<CarEntity> car) { List<CarInsureDto> listUser = new List<CarInsureDto>(); //CarInsureDto存储两表字段的类 listUser = (from u in car from g in carInsure where g.CarId==u.Id //链接条件 select new CarInsureDto() //需要获取的字段 { CarNum=u.CarNum, Company=g.Company, ForTime=g.ForTime, InsureMoney =g.InsureMoney, InsureType =g.InsureType }).ToList(); return listUser; //返回List }
当然还有很多种方法,有兴趣的朋友可以去了解。