2013-04-15 26 views
11

Tôi đã xem xét các giải pháp khác nhau ở đây nhưng không có giải pháp nào phù hợp với tôi, có lẽ vì tôi quá mới tất cả điều này và đang mò mẫm trong bóng tối một chút. Trong mã bên dưới, đối tượng "cuộc hẹn" chứa một số thông tin LDAP cơ bản. Từ một danh sách các đối tượng như vậy tôi muốn có thể lấy một bản ghi duy nhất, dựa trên id của nhân viên. Tôi hy vọng mã ở đây là đủ để minh họa. FTR, tôi đã thử nhiều công thức khác nhau, bao gồm cả cố gắng sử dụng và chọn. Tất cả đều thất bại với lỗi được đưa ra trong Tiêu đề ở trên.LINQ to Entities không nhận ra phương pháp 'System.String get_Item (System.String)'

IQueryable<appointment> query = null; 

foreach(var record in results) 
{ 
    BoiseStateLdapDataObject record1 = record; 
    query = db.appointments.Where(x => x.student_id == record1.Values["employeeid"]); 
} 

if (query != null) 
{ 
    var selectedRecord = query.SingleOrDefault(); 
} 

Trả lời

21

Cố gắng di chuyển id nhân viên khi ra khỏi truy vấn:

IQueryable<appointment> query = null; 

foreach(var record in results) 
{ 
    var employeeId = record.Values["employeeid"]; 
    query = db.appointments.Where(x => x.student_id == employeeId); 
} 

if (query != null) 
{ 
    var selectedRecord = query.SingleOrDefault(); 
} 
+0

Cảm ơn. Điều đó đã sửa lỗi. Bạn có thể cho tôi biết * tại sao * nó đã sửa nó? Hoặc là ngoài phạm vi của diễn đàn này? – user2283231

+3

@ user2283231 Khi bạn đang sử dụng LINQ to Entities, cây biểu thức được chuyển tới phương thức 'Where', sau đó nó được phân tích và chuyển đổi thành SQL. EF chỉ đơn giản là không thể chuyển đổi cuộc gọi chỉ mục sang SQL. Đó là lý do tại sao vượt qua giá trị đơn giản cố định vấn đề. Hãy chấp nhận câu trả lời nếu nó hữu ích :) –

+2

OK. Tôi thấy nó "chấp nhận được". :) – user2283231

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