2009-05-01 12 views
7

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 trato de usar una consulta con una llamada al método .Contains. ¿Dónde me he equivocado?Consultas compiladas y "Los parámetros no pueden ser secuencias"

//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);   
} 

Respuesta

11

This article tiene su respuesta:

consultas con los parámetros de la lista no pueden precompilado porque la traducción de la consulta depende del número de elementos de la lista.

Cuestiones relacionadas