Проблема
Я пытаюсь запросить таблицу (на основе ModelA
), используя другую таблицу (на основе ModelB). Эти модели упрощены для этого примера. Мне нужно сохранить результат как IQueryable
, поэтому изменение на Enumerable
или List
не является вариантом. Тем не менее, я попытался добавить .ToList()
, но получил ту же ошибку.
Вытягивание MyId
из одного списка в список строк (для использования Contains()
) не является вариантом, поскольку может быть слишком много MyIds
(> 40k), что вызывает ошибку, указывающую на то, что операция исчерпана из ресурсов, что я Догадываюсь, относится к оперативной памяти.
Ошибка
InvalidOperationException: выражение LINQ ... не может быть переведено. Либо перепишите запрос в форме, которая может быть переведена, либо явно переключитесь на оценку клиента, вставив вызов AsEnumerable (), AsAsyncEnumerable (), ToList () или ToListAsync ().
Модель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));
Каким способом (-ами) это можно сделать успешно?
Any
- правильный метод для этого. Спасибо. - person user3071284   schedule 26.02.2020