LINQ: DefaultIfEmpty() вызывает медленный ответ
Я сталкиваюсь с проблемой, когда DefaultIfEmpty()
вызывает медленный ответ. Код похож на:
rslt = (
from p in P.Where(p => p.fcode == fCode && p.year == year && p.is_deleted == false && p.pname != pNameS)
from c in C.Where(c => c.fcode == fCode && c.ccode == p.ccode)
from pf in PF.Where(pf => pf.fcode == fCode && pf.pcode == p.pcode).DefaultIfEmpty()
from defHU in DEF.Where(def => def.fixed_key == Constants.HU && pf.hu == def.def_key).DefaultIfEmpty()
from defAU in DEF.Where(def => def.fixed_key == Constants.AU && pf.pau == def.def_key).DefaultIfEmpty()
select new PPShow{
Year = p.year,
PCode = p.pcode,
PName = p.production_name,
FCode = pf.fcode,
Br = p.br,
CName = c.cname,
PArea = pf.parea,
PAU = pf.pau,
PAUName = defAU.def_data,
HA = pf.ha,
HUName = defHU.def_data,
SDate = p.sdate,
PDate = p.pdate,
StartDate = p.start_date,
EndDate = p. end_date,
Flag = 1
}).ToList();
Я попытался запросить 10000 записей, и мне потребовалось приблизительно 8,5 с, чтобы завершить, в то время как я удалил все 1 с. DefaultIfEmpty()
,
Интересно, что DefaultIfEmpty()
на самом деле Кроме того, есть ли решение для моего случая?