List集合
一、list泛型集合类
T:代表两个表的数据访问层,其中俩个数据访问层中的数据访问有相似之处或者是处于一样的访问,可以把两个数据访问层中的数据合到一个数据访问层中(即同一个类,两个数据访问层同用一个类)。
每个访问数据层中大致都会有一般的增删改查的操作,将其放在一个类中,可以减少每一个DAL对表做出的访问操作。
public class BaseDAL<T> where T :class
{
/// <summary>
/// 数据上下文
/// </summary>
public Model1 model
{
get
{
return new Model1();
}
}
/// <summary>
/// 查询集合
/// </summary>
/// <param name="Expression">表达式</param>
/// <returns>List集合</returns>
public List<T> Select(Expression<Func<T, bool>> Expression)
{
return model.Set<T>().Where(Expression).ToList();
}
/// <summary>
/// 查询单个对象
/// </summary>
/// <param name="Expression">表达式</param>
/// <returns>单个对象或null</returns>
public T single(Expression<Func<T, bool>> Expression)
{
return model.Set<T>().FirstOrDefault(Expression);
}
/// <summary>
/// 单个查询对象
/// </summary>主键
/// <param name="id"></param>
/// <returns>单个对象或null </returns>
public T Select(int id)
{
return model.Set<T>().Find(id);
}
/// <summary>
/// 添加对象
/// </summary>
/// <param name="info">数据</param>
/// <returns>受影响的行数</returns>
public int Insert(T info)
{
model.Set<T>().Add(info);
return model.SaveChanges();
}
/// <summary>
/// 删除
/// </summary>
/// <param name="info">数据</param>
/// <returns>受影响的行数</returns>
public int Delete(T info)
{
model.Set<T>().Remove(info);
return model.SaveChanges();
}
}
二、list集合 树 三层集合嵌套 {..{..{..}}}
查询一级分类所有 和一级分类下第一个子元素的二级集合 和第一个分类下的所有三级集合
//记录分类编号
Long cateId =null;
List result =new ArrayList<>();
//一级分类集合
List cates =null;
if (mobcatebarId ==null) {
cates =mobRepository.selectOneMobCate();
}else {
cates =mobRepository.selectOneMobCate(mobcatebarId);
}
//获取一级分类集合中首个分类的编号
if (cates !=null) {
//一级分类不存在时的异常处理
if(cates.size() ==0){
throw new ServiceException(ErrorCodeDef.GOODS_CATEGORY_NOT_EXISTING,"商品分类不存在");
}
//设置返回的一级分类详细
cates.forEach(cate -> {
MobCateBarVo mobCateBarVo =new MobCateBarVo();
BeanUtils.copyProperties(cate,mobCateBarVo);
result.add(mobCateBarVo);
});
if (mobcatebarId ==null) {
//默认第一个分类的编号
cateId = cates.get(0).getCateBarId();
}else {
//赋值
cateId = mobcatebarId;
}
}else{
//一级分类不存在时的异常处理
throw new ServiceException(ErrorCodeDef.GOODS_CATEGORY_NOT_EXISTING,"商品分类不存在");
}
//二级子分类集合
List cateBars =mobRepository.queryUsingMobCateBar(cateId);
List vos =new ArrayList<>();
//根据二级子分类集合,分别获取每个二级子分类集合的三级分类
cateBars.stream().map(cateTwo-> {
//集合转类型
MobCateBarVo subVo2 =new MobCateBarVo();
BeanUtils.copyProperties(cateTwo,subVo2);
//记录三级分类编号
Long cateIds = cateTwo.getCateBarId();
//获取三级分类集合
List mobCateBars =mobRepository.queryUsingMobCateBar(cateIds);
List mobVos =new ArrayList<>();
//设定二级分类所有三级分类
mobCateBars.stream().map(cateThree ->{
MobCateBarVo subVo3 =new MobCateBarVo();
BeanUtils.copyProperties(cateThree,subVo3);
return subVo3;
}).forEach(mobVos::add);
subVo2.setChilds(mobVos);
return subVo2;
}).forEach(vos::add);
// 将取得的二级分类和三级分类设定到一级分类中
if (cates !=null) {
result.get(0).setChilds(vos);
}
//返回一级二级三级分类的树型结构
return result;
链接:https://www.jianshu.com/p/468bf5564e32
来源:简书)

浙公网安备 33010602011771号