Я работаю над C#, и я ищу простой способ взять список, представляющий дерево, и поместить дерево в список с тем же порядком, что и в дерево.Создайте плоский список из дерева, упорядоченного по заказу дерева
У меня есть 4 свойства для каждого узла:
* ID
* ParentID,
* СтартПослед
* Имя
public class MyNode
{
public int ID{get;set;}
public int ParentID{get;set;}
public int SeqID{get;set;}
public string Name{get;set;}
}
И я есть коллекция MyNode:
List<MyNode> FlatListOfNodes{get;set;}
Я ищу что-то, что будет выглядеть так:
FlatListOfNodes.OrderBy(something).DoAnotherThing1(somthing)...
.
, который будет заказывать список в том же порядке, что и в дереве.
, например, если будет это дерево:
-- Parent1
-- Child 1.1
-- Child 1.2
-- grandson 1.2.1
-- grandson 1.2.2
-- grandson 1.2.3
-- Child 1.3
-- Parent2
-- Child 2.1
-- Child 2.2
-- grandson 2.2.1
-- grandson 2.2.2
-- grandson 2.2.3
-- Child 2.3
-- grandson 2.3.1
-- grandson 2.3.2
Я хочу, чтобы представить его в виде плоского списка в том же порядке.
в этом примере:
- Parent1 есть ID = 32, ParentID = -1, SeqID = 1, Name = "Parent1"
- Child1.2 есть ID = 412, ParentID = 32, SeqID = 2, Name = "Child1.2"
- внук 1.2.1 есть ID = 231, ParentID = 412, SeqID = 1, Name = "внук 1.2.1"
- Parent2 будет иметь ID = 345, ParentID = -1, SeqID = 2, Name = "Parent2"
- Child2.3 с ID = 785, ParentID = 345, SeqID = 3, Name = "Child 2.3"
- Внук 2.3.1 будет иметь ID = 854, ParentID = 785, SeqID = 1, Name = "внуку 2.3.1"
Что такое лучший способ сделать это?
Есть ли способ сделать это с помощью linq?
Спасибо!
Вы можете пройти через список повторно. –
Я думаю, вы должны взглянуть на [Enumerable.SelectMany] (http://msdn.microsoft.com/en-us/library/vstudio/bb534336%28v=vs.100 % 29.aspx) – germi
В этом случае SelectMany не может быть использован. Это не коллекция внутри коллекции – user436862