Hi,
In short you want to get a single flat list with a node id as well as all its direct and indirect childs id?
Basically you'll need a recursive method that loads chidls from an id (or from a list of ids). You'll call that for the root id and each time it load childs it will call itself recursively to load childs for those childs etc... until no more childs are loaded.
Another option is to use a server side "recursive common table expression" if using SQL Server.
Edit: I created a sample at https://dotnetfiddle.net/2tULlj so that you can get the idea.