var logs = myContext.Logs.Where(x => ...).ToList();
var objectIds = logs.Select(x => x.ObjectId).Distinct().ToArray();
var objects = myContext.MyObjects.Where(x => objectIds.Contains(x.ID)).ToList();
foreach (MyObject myObject in objects)
{
myObject.Logs = logs.Where(x => x.ObjectId == myObject.ID).ToList();
}
Когда я смотрю на сгенерированные запросы, у меня есть:
SELECT * FROM LOGS WHERE ...
и
SELECT * FROM MYOBJECTS WHERE ID IN (...)
Это то, что я хочу, но у меня есть ненужный запрос для каждой итерации после
SELECT * FROM LOGS WHERE OBJECTID = ...
Я предполагал, что из первых двух запросов все данные были загружены, так зачем запускать новые запросы в базе данных?