У меня есть таблица для списка сотрудников с их руководителями. < /p>
| UserID | SupervisorUserId |
|--------|------------------|
| 10 | null |
| 1 | 10 |
| 2 | 1 |
| 3 | 1 |
| 4 | 3 |
| 5 | 10 |
| 6 | 5 |
| 7 | 6 |
| 8 | 6 |
| 9 | 8 |
Вот диаграмма для визуализации:
и здесь. PrettyPrint-Override ">public JsonResult GetEmployeesWithReportingLevel()
{
try
{
var getEmployees = GetEmployees().ToList();
var employeeList = (from e in getEmployees
where e.IsDeleted != true
select new ReportingLineList
{
UserId = e.UserId,
SupervisorId = e.SupervisorId
}).ToList();
var reportingLevel = (from emp in employeeList
select new
{
UserId = emp.UserId,
ReportingLevel = GetReportingLevel(employeeList, emp.UserId, 0)
}).ToList();
return new JsonResult(reportingLevel);
}
catch
{
throw;
}
}
< /code>
private int GetReportingLevel(IEnumerable employeeList, Guid UserId, int reportingLevel)
{
try
{
var reportingEmployees = (from emp in employeeList
where emp.SupervisorId == UserId
select new
{
UserId = emp.UserId
}).ToList();
foreach (var emp in reportingEmployees)
{
if (emp.UserId != null)
{
return GetReportingLevel(employeeList, (Guid)emp.UserId, reportingLevel + 1);
}
}
return reportingLevel;
}
catch
{
throw;
}
}
< /code>
Мой ожидаемый результат должен быть: < /p>
| UserId | Reporting level |
|--------|-----------------|
| 2 | 0 |
| 4 | 0 |
| 7 | 0 |
| 9 | 0 |
| 3 | 1 |
| 8 | 1 |
| 1 | 2 |
| 6 | 3 |
| 5 | 3 |
| 10 | 4 |
< /code>
С моим текущим результатом кажется, что он просто итерация с первым сотрудником, которого получит мой код. < /p>
Вот результат, который я получаю. < /p>
| UserId | Reporting level |
|--------|-----------------|
| 2 | 0 |
| 4 | 0 |
| 7 | 0 |
| 9 | 0 |
| 3 | 1 |
| 8 | 1 |
| 1 | 1 |
| 6 | 1 |
| 5 | 2 |
| 10 | 3 |
Подробнее здесь: https://stackoverflow.com/questions/723 ... -using-lin
Как получить список сотрудников и их уровень отчетности рекурсивно с использованием LINQ ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как подсчитать количество менеджеров отчетности в Java 8 или простой Java? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-