Скомпилированные запросы и & # 8220; параметры не могут быть последовательностями & # 8221;

StackOverflow https://stackoverflow.com/questions/813256

Вопрос

Я думал, что скомпилированные запросы будут выполнять тот же перевод запросов, что и DataContext. Тем не менее, я получаю ошибку во время выполнения, когда пытаюсь использовать запрос с вызовом метода .Contains. Где я ошибся?

//private member which holds a compiled query.
Func<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
  compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
  <DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
  ((dc, ids) => dc.TestRecords.Where(tr => ids.Contains(tr.ID)).ToList());

//this method calls the compiled query.
public void FiftyRecordCompiledQueryByID()
{
  List<int> IDs = GetRandomInts(50);

  //System.NotSupportedException
  //{"Parameters cannot be sequences."}

  List<DataAccess.TestRecord> results = compiledFiftyRecordQuery
    (myContext, IDs);         
}
Это было полезно?

Решение

Эта статья есть ваш ответ:

  

Запросы с параметрами списка не могут быть   предварительно скомпилированы, потому что перевод   запрос зависит от числа   элементов в списке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top