如果我有一组类似的员工数据:分级分层Linq中
var users = new[]
{
new {SupervisorId = "CEO", UserId = "CEO", UserName = "Joe"},
new {SupervisorId = "CEO", UserId = "CIO", UserName = "Mary"},
new {SupervisorId = "CIO", UserId = "XDIR", UserName = "Ed"},
new {SupervisorId = "CIO", UserId = "YDIR", UserName = "Lisa"},
new {SupervisorId = "XDIR", UserId = "AMNGR", UserName = "Steve"},
new {SupervisorId = "AMNGR", UserId = "ASUP", UserName = "Lesley"}
};
是否可以使用Linq添加分级层,在这个意义上说:
- CEO = 1(顶部)
- CIO = 2(第二级)
- XDIR和YDIR = 3(第三级)
- AMNGR = 4(等)
- ASUP = 5(等)
我已经能集团员工根据SupervisorId,但不知道如何使“水平”发生。
var userGroups = from user in users
group user by user.SupervisorId into userGroup
select new
{
SupervisorId = userGroup.Key,
Level = ??????
Users = userGroup.ToList()
};
foreach (var group in userGroups)
{
Console.WriteLine("{0} - {1} - {2}", group.SupervisorId, group.Level, group.Users.Count);
}
非常感谢。
您是否希望级别适用于组中的所有成员。如果你看看集团首席执行官,那么有2个级别。 – 2010-06-23 12:50:01
@Leom,CEO supervisorid是多余的,首席执行官监督=首席执行官。所以这个想法是,在SupervisorId = UserId的情况下,你是首席执行官 - 树从那里开始。 – dizzyguy 2010-06-23 16:23:52