2009-05-01 29 views
7

Tôi nghĩ rằng các truy vấn được biên dịch sẽ thực hiện cùng một bản dịch truy vấn dưới dạng DataContext. Tuy nhiên, tôi nhận được một lỗi thời gian chạy khi tôi cố gắng sử dụng một truy vấn với một cuộc gọi phương thức .Contains. Tôi đã đi sai ở đâu?Truy vấn được biên dịch và "Tham số không thể là chuỗi"

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

Trả lời

11

This article có câu trả lời của bạn:

Queries với các thông số danh sách có thể không được biên dịch sẵn vì bản dịch của truy vấn phụ thuộc vào số lượng các mục trong danh sách.

Các vấn đề liên quan