【发布时间】:2015-04-08 18:48:01
【问题描述】:
我有一本字典,其中包含这样的员工和他/她的经理的映射
Dictionary<string, string> employees = new Dictionary<string, string>()
{
{ "A","C" },
{ "B","C" },
{ "C","F" },
{ "D","E" },
{ "E","F" },
{ "F","F" }
};
我不想让层次结构中每个经理下的员工,不仅是他们的直接下属,而且是在层次结构链中。 在上面的字典中,根节点/首席执行官被列为向自己报告。这是唯一保证具有这种自我关系的节点。
我如何才能找到向每位经理汇报的员工总数。输出应该是
A - 0
B - 0
C - 2
D - 0
E - 1
F - 5
这是我迄今为止尝试过的,但它只提供直接下属的计数,而不是链中的所有下属
var reports = employees
.GroupBy(e => e.Value, (key, g) => new { employee = key, reports = g.Count() });
【问题讨论】:
-
似乎您应该将数据视为邻接列表并构造一棵树,然后您可以遍历树并获取每个节点的子节点数(除其他外)。
-
您的报告图表有一个循环:“F”报告给“F”。