Pregunta

Pensé que las consultas compiladas realizarían la misma traducción de consulta que DataContext. Sin embargo, recibo un error en tiempo de ejecución cuando intento utilizar una consulta con una llamada al método .Contains. ¿Dónde me he equivocado?

//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);         
}
¿Fue útil?

Solución

Este artículo tiene tu respuesta:

  

Las consultas con parámetros de lista no pueden ser   precompilado porque la traducción de   La consulta depende del número.   de artículos en la lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top