У меня есть этот список из более чем 2000 категорий, которые необходимо организовать в дереве перед отправкой на контроллер и представление, чтобы плагин javascript мог их правильно отобразить.Дерево объектов
Я уже делаю это, но исполнение ужасно. Для сборки дерева требуется примерно 30 секунд.
Я не вижу, что здесь понижает производительность. Можете ли вы, ребята, помочь мне улучшить этот код?
var allCategories = dal.Listar();
List<Model.Entity.CategoriaCursoEADVO> nestedCategories = new List<Model.Entity.CategoriaCursoEADVO>();
foreach (Model.Entity.CategoriaCursoEAD item in allCategories)
{
if (item.IdCategoriaPai == null)
{
CategoriaCursoEADVO child = new CategoriaCursoEADVO();
child.id = item.Id;
child.text = item.Descricao;
nestedCategories.Add(child);
FillChild(allCategories, child, item.Id);
}
}
А вот метод FillChild:
public int FillChild(IEnumerable<CategoriaCursoEAD> categorias, CategoriaCursoEADVO parent, int IID)
{
var childCategories = categorias.Where(w => w.IdCategoriaPai.Equals(IID));
parent.children = new List<CategoriaCursoEADVO>();
if (childCategories.Count() > 0)
{
foreach (CategoriaCursoEAD cat in childCategories)
{
CategoriaCursoEADVO child = new CategoriaCursoEADVO();
child.id = cat.Id;
child.text = cat.Descricao;
parent.children.Add(child);
FillChild(categorias, child, cat.Id);
}
return 0;
}
else
{
return 0;
}
}
Я думаю, что проблема с новыми экземплярами и попытался с помощью параллельных циклов, без satisfatory уровня улучшения.
Удалось ли вам использовать делегат ForEach? – Praveen
Нет, я этого не сделал. Можете ли вы опубликовать образец? – programad
Возможно, вы часто попадаете в базу данных? Я думаю о первом утверждении в методе 'FillChild'. – Christian