У меня есть большая серверная БД, которая имеет следующую структуру класса, который я использую:Получить все дочерние элементы в списке LINQ
public class InputClass
{
public int id { get; set; }
public string text { get; set; }
public string icon { get; set; }
public int? parentId { get; set; }
}
Как вы можете видеть, каждый элемент может иметь родительский идентификатор, который в итоге генерирует список информации, который пользователь может взаимодействовать с деревом.
Используя следующие примеры данных, в качестве примера:
var inputList = new List<InputClass>();
inputList.Add(new InputClass() { id = 1, text = "Item #1"});
inputList.Add(new InputClass() { id = 2, text = "Item #2" });
inputList.Add(new InputClass() { id = 3, text = "Item #3" });
inputList.Add(new InputClass() { id = 4, text = "SubItem #1", parentId = 1 });
inputList.Add(new InputClass() { id = 5, text = "SubItem #2", parentId = 1 });
inputList.Add(new InputClass() { id = 6, text = "SubItem #3", parentId = 2 });
inputList.Add(new InputClass() { id = 7, text = "Sub-Sub Item #1", parentId = 4 });
Я хотел бы передать ID # и получить список всех элементов, отмеченных с этим ParentID. Например, если бы я имел идентификационный номер 1, то результат должен быть следующим:
ID Name
4 Subitem #1
5 Subitem #2
7 Sub-Sub Item #1
как вы можете видеть, результат должен вернуть все, что сидит под идентификатором # 1, включая пункт с ID # 7 (даже если у него есть родительский идентификатор 4, родительский элемент №4 - №1).
Надеюсь, что вышеизложенное имеет смысл, любые идеи о том, как достичь этого в LINQ?
Что вы пробовали до сих пор? Как выглядит ваша текущая лучшая попытка? Что он возвращает? – mech
Возможный дубликат [Рекурсивная иерархия - Рекурсивный запрос с использованием Linq] (http://stackoverflow.com/questions/20974248/recursive-hierarchy-recursive-query-using-linq) – danish
Почему это должен быть LinQ? Вы можете использовать рекурсивную функцию в этом случае. – Sakura