LINQ (Language-Integrated Query) является мощным средством языка C#, а данный проект позволяет использовать его для игровых объектов и их данных. LINQ to GameObject — это расширения GameObject для Unity, которые позволяют перемещаться по иерархии и добавлять GameObject. Проект направлен на то, чтобы объединить возможности LINQ и производительность итераций.
Концепция LINQ для GameObject:
Каждый метод возвращает IEnumerable<GameObject> и отложенное выполнение. Например:
origin.Ancestors();   // Container, Root
origin.Children();    // Sphere_A, Sphere_B, Group, Sphere_A, Sphere_B
origin.Descendants(); // Sphere_A, Sphere_B, Group, P1, Group, Sphere_B, P2, Sphere_A, Sphere_B
origin.BeforeSelf(); // C1, C2
origin.AfterSelf();  // C3, C4
Вы можете использовать цепочку запросов и использовать некоторые указанные методы (Destroy, OfComponent и другие)
// destroy all filtered(tag == "foobar") objects
root.Descendants().Where(x => x.tag == "foobar").Destroy();

// destroy all cloned objects
origin.transform.root.gameObject
    .Descendants()
    .Where(x => x.name.EndsWith("(Clone)"))
    .Destroy();

// get FooScript under self childer objects and self
var fooScripts = root.ChildrenAndSelf().OfComponent<FooScript>(); 
Подробную информацию смотрите на Github проекта
Вы можете установить его из Asset Store бесплатно. Используйте пространство имен Unity.Linq
`
ОЖИДАНИЕ РЕКЛАМЫ...