2009-05-01 22 views
7

Ho pensato che le query compilate eseguissero la stessa traduzione di query di DataContext. Tuttavia sto ricevendo un errore in fase di runtime quando tento di utilizzare una query con una chiamata al metodo .Contains. Dove ho sbagliato?Le query compilate e "I parametri non possono essere sequenze"

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

risposta

11

This article ha la risposta:

query con parametri della lista non può essere pre-compilate perché la traduzione di query dipende dal numero di elementi nell'elenco.

Problemi correlati