LINQ-Rekursion-Funktion?

Nehmen wir als diese n-tier-tief-Struktur, zum Beispiel:

public class SomeItem 
{
     public Guid ID { get;set; }
     public string Name { get; set; }
     public bool HasChildren { get;set; }
     public IEnumerable<SomeItem> Children { get; set; }
}

Wenn ich bin auf der Suche, um ein bestimmtes Element durch ID (irgendwo in der Struktur) gibt es einige LINQ-Güte, die ich verwenden können, um es leicht zu bekommen in eine einzelne Anweisung oder muss ich nutzen, um einige rekursive Funktion, wie unten:

   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;
    }
Brauchen Sie wirklich die HasChildren-Eigenschaft?
Nicht wirklich, nur ein Helfer, so dass es liest sich besser 🙂 - Kinder.Count > 0
Kinder.Jede() 🙂

InformationsquelleAutor The_Butcher | 2011-01-27

Schreibe einen Kommentar