我从外部来源收到以下列表(更像是一个连接表):
请注意,在某些情况下,一个人向多个人报告。在此示例 C001 中。
List<DirectReport> list = new List<DirectReport>()
{
new DirectReport(){ EmployeeId = "B001", ReportsTo = "A001" },
new DirectReport(){ EmployeeId = "B002", ReportsTo = "A001" },
new DirectReport(){ EmployeeId = "B003", ReportsTo = "A002" },
new DirectReport(){ EmployeeId = "B004", ReportsTo = "A003" },
new DirectReport(){ EmployeeId = "C001", ReportsTo = "B001" },
new DirectReport(){ EmployeeId = "C001", ReportsTo = "B003" },
new DirectReport(){ EmployeeId = "C002", ReportsTo = "B002" },
...
};
为了让 C001 的所有直接上级,我想出了以下内容:
IEnumerable<string> listC001sSuperiors = list.Where(x => x.EmployeeId == "C001").Select(y => y.ReportsTo);
这产生:
"B001"
"B003"
我如何包括所有上级,包括他的直接上级的上级等等?
C001 的预期结果:
"B001"
"B003"
"A001"
"A002"