2013-04-15 11 views
11

ここではさまざまな解決策を見てきましたが、いずれも私にとってはうまくいかないようです。このすべては、暗闇の中で少しずつ練習しています。以下のコードでは、オブジェクト "appointment"にいくつかの基本的なLDAP情報が含まれています。そのようなオブジェクトのリストから、従業員IDに基づいて単一のレコードを取得できるようにしたいと考えています。私はここのコードが説明するのに十分であることを願っています。 FTRでは、fromとselectを使用しようとすることを含め、さまざまな形式を試みました。上記のタイトルに記載されているエラーですべて失敗します。LINQ to Entitiesは、 '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(); 
} 

答えて

21

従業員IDは、クエリから抜け出すに移動してください:

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

感謝。これでエラーが修正されました。あなたはなぜそれを修正したのか教えていただけますか?それとも、このフォーラムの範囲外ですか? – user2283231

+3

@ user2283231 Linq to Entitiesを使用している場合、式ツリーは 'Where'メソッドに渡され、解析されてSQLに変換されます。 EFは単にインデクサー呼び出しをSQLに変換できませんでした。だからこそ、平凡な価値を渡して問題を解決しました。役に立ったと思ったら答えを受け入れるように自由に感じてください:) –

+2

入手しました。私はそれが「受け入れられる」ことが分かります。 :) – user2283231

関連する問題