Recuperando uma estrutura de árvore de um banco de dados usando o LINQ

Eu tenho uma estrutura de árvore de organograma armazenada em um banco de dados. É algo como

ID (int);
Name (String);
ParentID (int)

Em C # é representado por uma classe como

class Employee
{
int ID, 
string Name, 
IList < Employee> Subs
} 

Eu estou querendo saber como é a melhor maneira de recuperar esses valores do banco de dados para preencher os objetos C # usando LINQ (estou usando o Entity Framework)

Deve haver algo melhor do que fazer uma chamada para obter o nível mais alto, em seguida, fazer chamadas repetidas para obter subs e assim por diante.

Qual a melhor maneira de fazer isso?

questionAnswers(5)

yourAnswerToTheQuestion