Problema ninguno solo que no puedo recorrer todo el arbol sino hasta el segundo nivel.Pero no entiendo. ¿Qué error aparece?
Código:
var registros = (from cargos in bd.Cargos.Where(c=>c.Codigo=="001")
join cargos2 in bd.Cargos.Where(w=>w.EstaEliminado == false) on cargos.Id equals cargos2.PadreId into lista
where cargos.EstaEliminado == false
select new vmCargos {
Id = cargos.Id,
Codigo = cargos.Codigo,
Descripcion = cargos.Descripcion,
Nombre = cargos.Nombre,
ListaDeHijos = lista
}).ToList();
Lo trate de hacer por Linq to object pero tampoco me salio, el c.Codigo=="001" es por que solo vamos a manejar una raiz y desde alli si se desprenderán las ramas y vmCargos es para evitar el ciclo infinito con las propiedades de navegación en la parte web, así que la vm es el mismo cargo pero sin estas propiedades.
El w.EstaEliminado es una propiedad debido a que no podemos borrar de buenas a primeras los cargos sí estos tienen información adicional unida a ella por ejemplo que el una persona tenga ese cargo, no se puede eliminar de la bd debido al historial que se va acumulando, solo se marca como esta eliminada para no volverla a utilizar en la aplicación.