如果我有一組類似的員工數據:分級分層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