У меня есть список с идентификаторами:Какую конструкцию я могу использовать вместо Содержит?
var myList = new List<int>();
Я хочу, чтобы выбрать все объекты из БД с идентификаторами из MyList:
var objList= myContext.MyObjects.Where(t => myList.Contains(t.Id)).ToList();
Но когда myList.Count > 8000
я получаю сообщение об ошибке:
The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.
Думаю, что это потому, что я использовал Contains()
. Что я могу использовать вместо Contains?
вы можете попробовать избежать 'ToList' и конец и при необходимости, результаты? –
Что вы используете? Linq to SQL? Какой вид db? Почему вы не рассматриваете использование хранимой процедуры? –
@ Vignesh.N - Результат все равно потребует построения плана запроса, поэтому я не верю, что это изменило бы результат. –