Как отфильтровать запрос со значениями из списка в ef coreC#

Место общения программистов C#
Anonymous
Как отфильтровать запрос со значениями из списка в ef core

Сообщение Anonymous »

У меня есть список, который является результатом запроса к базе данных. Мне нужно иметь возможность запросить другую таблицу, но отфильтровать этот запрос на основе первого списка. В идеальном мире я бы объединил эти две таблицы, но они из разных баз данных, которые находятся на разных серверах, и, насколько я знаю, единственный способ сделать это - связать серверы, чего мне не разрешено делать.
Я уже запросил обе таблицы и объединил результаты в отдельный список, но второй запрос возвращает огромные результаты при широко открытом запуске, и это все забивает. list1 — это список областей, который ссылается на «Подобласти», который затем ссылается на «Операции», которые соответствуют «OperationName» в list2.
Я думал, что могу добавить предложение «.where» в list2, вот так, но это не сработало:

Код: Выделить всё

.Where(a => list1.Any(b => b.Subareas.Any(c => c.Operations.Any(d => d.Name == a.OperationName))))

Код: Выделить всё

Note: selectedArea!.Name is a form value the user must select before any of this happens.

private async Task GetRecords(
{
var list1 = await dbcontext1.Areas
.Where(a => a.Name == selectedArea!.Name)
.Include(a => a.Subareas)
.ThenInclude(a => a.Operations)
.ToListAsync();

var list2 = await dbcontext2.ProdDetails
.Where(a => !string.IsNullOrEmpty(a.OperationName))
.Select(a => new
{
Customer = a.Customer,
Assembly = a.Assembly,
AssemblyDescription = a.AssemblyDescription,
AssemblyRevision = a.AssemblyRevision,
WorkOrder = a.WorkOrder,
Batch = a.Batch,
BatchQuantity = a.BatchQuantity,
Barcode = a.Barcode,
LastWipTime = a.LastWipTime,
InProcess = a.InProcess,
OperationName = a.OperationName
})
.ToListAsync();

//do more stuff not relevant to this question...
}
Надеюсь, я объяснил достаточно ясно.

Вернуться в «C#»