Tomemos esta estructura profunda de n niveles, por ejemplo:Función de recursividad LINQ?
public class SomeItem
{
public Guid ID { get;set; }
public string Name { get; set; }
public bool HasChildren { get;set; }
public IEnumerable<SomeItem> Children { get; set; }
}
Si yo estoy mirando para conseguir un artículo en particular por ID (en cualquier parte de la estructura) ¿hay algo de bondad LINQ que puedo utilizar para obtener fácilmente en un solo estado o tengo que utilizar alguna función recursiva de la siguiente manera:
private SomeItem GetSomeItem(IEnumerable<SomeItem> items, Guid ID)
{
foreach (var item in items)
{
if (item.ID == ID)
{
return item;
}
else if (item.HasChildren)
{
return GetSomeItem(item.Children, ID);
}
}
return null;
}
¿Realmente necesita la propiedad HasChildren? – Amnon
No es realmente, solo un ayudante, por lo que lee mejor :) - Children.Count> 0 –
@The_Butcher Children.Any() :) – felickz