У меня есть две таблицы: Index
и Codes
, когда выполняется одно условие, мне нужно проверить, действительно ли Index
все еще действует, и для этого мне нужно получить EndDate
кода, который находится в таблице Codes
(поскольку у меня есть только идентификатор кода в таблице Index
). Вот как я это делаю:
1) Сначала я получаю все коды, которые закончилисьуже (около 3 тыс. + элементов)
var goods = _context.Codes.Select(a =>
new Codes
{
Loid = a.Loid,
Pid = a.Pid,
Code = a.Code,
Startdate = a.Startdate,
Enddate = a.Enddate
})
.Where(x => x.Enddate < DateTime.Now)
.ToList();
тогда я беру свой Индекс и добавляю туда значения, а также CodeEnd
из Codes
списка выше:
query = _context.VpAbcIndex
.AsNoTracking()
.Select(e => new VpAbcIndex
{
Id = e.Id,
ParentName = e.ParentName ?? "!",
ParentEndDate = e.ParentEndDate,
ParentStartDate = e.ParentStartDate,
ParentCode = e.ParentCode,
ParentNote = e.ParentNote ?? "",
ParentStatus = e.ParentStatus,
ChildName = e.ChildName ?? "!",
ChildId = e.ChildId,
ChildEndDate = e.ChildEndDate,
ChildStartDate = e.ChildStartDate,
CodeEnd = (filter.Level == 0) ? goods
.FirstOrDefault( x => x.Code == e.ParentCode).Enddate :
(filter.Level == 1) ? goods
.FirstOrDefault(x => x.Code == e.ChildCode).Enddate :
(filter.Level == 2) ?
goods
.FirstOrDefault(x => x.Code == e.GrandChildCode).Enddate : null
})
;
}
Это примерно10 тыс. Предметов.Похоже, что они появляются в моем браузере довольно долго.Я делаю что-то неправильно?Есть ли более быстрый способ объединения этих значений?