Проблема
Я пытаюсь запросить таблицу (на основе ModelA
), используя другую таблицу (на основе ModelB). Эти модели упрощены для этого примера. Мне нужно сохранить результат как IQueryable
, поэтому изменение на Enumerable
или List
не вариант. Тем не менее, я попытался добавить .ToList()
, но получил ту же ошибку.
Извлечение MyId
из одного списка в список строк (для использования Contains()
) не вариант, так как может быть слишком много MyIds
(> 40 КБ), что приводит к ошибке, указывающей на операцию как нехватку ресурсов, что, я думаю, относится к ОЗУ.
Ошибка
InvalidOperationException: выражение LINQ ... не может быть переведено. Либо переписать запрос в форме, которую можно перевести, либо явно переключиться на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c ().
Модель A
public class ModelA
{
public string MyId { get; set; }
public string MyName { get; set; }
}
Модель B
public class ModelB
{
public string MyId { get; set; }
public string MyName { get; set; }
}
Попытка
var results = context.ModelA
.Where(a => ModelB.All(b => b.MyId == a.MyId));
Каким образом это можно сделать успешно?