2013-04-15 26 views
11

Spojrzałem na różne rozwiązania tutaj, ale żaden z nich nie wydaje się działać dla mnie, prawdopodobnie dlatego, że jestem zbyt nowy, aby wszystko to i po omacku ​​mam trochę po omacku. W poniższym kodzie obiekt "termin" zawiera kilka podstawowych informacji LDAP. Z listy takich obiektów chcę mieć możliwość uzyskania jednego rekordu na podstawie identyfikatora pracownika. Mam nadzieję, że ten kod jest wystarczający do zilustrowania. FTR, próbowałem różnych sformułowań, w tym próbowałem użyć i wybrać. Wszystkie zawodzą z błędem podanym w powyższym tytule.LINQ to Entities nie rozpoznaje metody "System.String get_Item (System.String)" metoda

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

Odpowiedz

21

Spróbuj przenieść identyfikator pracownika wydostanie się z zapytaniem:

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

Dzięki. To naprawiło błąd. Czy możesz mi powiedzieć * dlaczego * to naprawił? Czy to wykracza poza zakres tego forum? – user2283231

+3

@ user2283231 Podczas używania Linq do Entities, drzewo wyrażeń jest przekazywane do metody "Where", następnie jest analizowane i konwertowane na SQL. EF po prostu nie mógł przekonwertować wywołania indeksu do SQL. Właśnie dlatego przekazywanie zwykłej wartości rozwiązało problem. Przyjmij odpowiedź, jeśli to było pomocne :) –

+2

Rozumiem. Uważam, że jest "do przyjęcia". :) – user2283231

Powiązane problemy