Я использую oracleDB, и у меня есть вид, как показано ниже, в котором содержатся сотрудники и его менеджеры.Лучший способ написать lingq для запросов цикла
empNo
FirstName
LastName
Manager
Мне нужно выбрать человека и все его сотрудники. IE
Person1 is Manager
-- Person1_1
----Person1_1_1
----Person1_1_2
-- Person1_1
Когда я войти в систему с пользователем Person1
, мне нужно, чтобы все лица, выше.
Вот мой LINQ, но он слишком медленный. Каков эффективный способ получить данные?
List<decimal> OrgPerson2 = new List<decimal>();
public List<decimal> getOrgPerson(decimal empNo)
{
List<decimal> OrgPerson = new List<decimal>();
OrgPerson.AddRange(db.CRM_PERSON_TITLE_V.Where(c => c.MANAGER == empNo).Select(c => (decimal)c.PERSONID).ToList());
var subPerson = db.CRM_PERSON_TITLE_V.ToList();
foreach (var item in OrgPerson)
{
OrgPerson2.Add(item);
var subPerson2 = subPerson.Where(c => c.MANAGER == item).Select(c => (decimal)c.PERSONID).ToList();
if (subPerson2 != null)
{
if (subPerson2.Count > 0)
{
getOrgPerson(item);
}
}
}
return OrgPerson2.Distinct().ToList();
}
Избавьтесь от всех вызовов ToList(), которые вы можете, они обычно действительно замедляют работу. Call ToList после создания коллекции. –