그래서 Category
개체 컬렉션을 생성하는 재귀 함수를 작성했습니다.재귀 범주 처리 코드 문제 처리
[ChildActionOnly]
public ActionResult FindAllCategorias()
{
var categoriasDb = _categoriaRepository.FindAllCategorias().Where(s => s.CategoriaPadreId == null);
List<CategoriaModel> model = new List<CategoriaModel>();
foreach (var categoria in categoriasDb)
{
model.Add(new CategoriaModel()
{
CategoriaId = categoria.CategoriaId,
Nombre = categoria.Nombre,
Encabezado = categoria.Encabezado
});
}
foreach (var categoriaModel in model)
{
categoriaModel.Subcategorias = FindSubcategoriesForCategory(categoriaModel.CategoriaId);
}
return PartialView(model);
}
private List<CategoriaModel> FindSubcategoriesForCategory(int id)
{
var subcategorias = _categoriaRepository.FindAllCategorias().Where(c => c.CategoriaPadreId == id);
List<CategoriaModel> subcategoriasModel = new List<CategoriaModel>();
foreach (var subcategoria in subcategorias)
{
subcategoriasModel.Add(new CategoriaModel()
{
CategoriaId = subcategoria.CategoriaId,
Nombre = subcategoria.Nombre,
Encabezado = subcategoria.Encabezado,
Subcategorias = FindSubcategoriesForCategory(subcategoria.CategoriaId)
});
}
return subcategoriasModel;
}
이제 내보기에서 재귀를 사용하여 내가 선택한 템플릿의 각 범주에서 침을 뱉을 것을 제안합니까? 보기에서 이런 식으로하는 방법을 잘 모르겠습니다.
감사합니다. :) 한 번 더, 나는 SQL 녀석이 아니에요. 재귀 외래 키 스키마를 사용하고 제안한 링크와 같이 중첩 세트를 사용하는 것의 성능 차이는 얼마나됩니까? 감사! –