मुझे यकीन है कि अगर यह है कि वास्तव में आप क्या चाहते हैं, लेकिन यहाँ नहीं हूँ एक पुनरावर्ती विधि अनंत लूप में प्रवेश करने नहीं कुछ LINQ सुनिश्चित करती है कि का उपयोग करता है निम्न स्क्रिप्ट के साथ इसका परीक्षण कर सकते हैं:
void Main()
{
var lst = new [] {
new Extensions.Employee{ EmployeeId = 1, Name = "A", ManagerId = null },
new Extensions.Employee{ EmployeeId = 2, Name = "B", ManagerId = null },
new Extensions.Employee{ EmployeeId = 3, Name = "C", ManagerId = 1 },
new Extensions.Employee{ EmployeeId = 4, Name = "D", ManagerId = 3 },
new Extensions.Employee{ EmployeeId = 5, Name = "E", ManagerId = 2 }
};
lst.GetTreeForEmployeeNumber(4).Dump();
}
public static class Extensions {
public class Employee {
public int EmployeeId { get; set; }
public string Name { get; set; }
public int? ManagerId { get; set; }
}
public static IEnumerable<Employee> GetTreeForEmployeeNumber(this IEnumerable<Employee> source, int startingId) {
var result = source.Where(x => x.EmployeeId == startingId).FirstOrDefault();
if (result != null) {
var resultAsE = new [] { result };
if (!result.ManagerId.HasValue)
return resultAsE;
return resultAsE.Union(source.Except(resultAsE).GetTreeForEmployeeNumber(result.ManagerId.Value));
}
return new Employee [] { };
}
}
4,3,1 ?? आप किस तरह का एल्गोरिदम कह रहे हैं? :) क्या होगा यदि मैं 5 का चयन करता हूं? –
@ सेर्कन: उसे आईडी के साथ कर्मचारी (ओं) की एक सूची देनी चाहिए: 5, 2 – stackoverflowuser
मैं अभी भी आपको समझ नहीं सकता। 2 प्रबंधक है? यदि हां, जैसा कि मैं समझता हूं। आप EmployeeId और इस कर्मचारी के प्रबंधक के रूप में EmployeeId के रूप में चयनित चाहते हैं? –