Método de extensión Linq, cómo encontrar al niño en la colección recursiva

Ya estoy familiarizado con Linq, pero tengo poca comprensión de los métodos de extensión. Espero que alguien pueda ayudarme.

Entonces tengo este pseudocódigo de colección jerárquica, es decir:

class Product
  prop name
  prop type
  prop id
  prop List<Product> children

Y tengo una lista de productos Lista de productos.

¿Hay alguna forma de buscar productos en esta colección porcarné de identidad con un método de extensión? En otras palabras, necesito un elemento en algún lugar de la jerarquía.

Respuestas a la pregunta(6)

Su respuesta a la pregunta