2

asp.net ページのレポートを作成していて、この linq ステートメントの結果を既存のデータセットに割り当てようとしていますが、「このコンテキストではプリミティブ型または列挙型のみがサポートされています」というメッセージが表示されます。エラーメッセージ。これが私のコードです:

   var contextTable = new dbpersonnelEntities();                
   var contextHistory = new WriterInResidenceEntities();

   var rslt = (from c in contextTable.TableofOrganizationRpts
            where !(from o in contextHistory.emp_history
            select o.employeeID).Contains((int)c.employeeid_fk)
                       select c).ToList();

   ReportDataSource r = new ReportDataSource("tableOfOrgDS", rslt);
4

1 に答える 1

0

1 つの LINQ クエリで異なるコンテキストのエンティティ型を混在させることはできません。それらを単一のコンテキストに入れるか、これを実行してみてください:

var employeeIds = (from o in contextHistory.emp_history select o.employeeID).ToList();

次に、このリストを 2 番目のクエリに渡します。

var rslt = (from c in contextTable.TableofOrganizationRpts
            where !employeeIds.Contains((int)c.employeeid_fk)
            select c).ToList();

これINにより、結果の SQL クエリで条件が生成されます。これは動作が遅くなる可能性があることに注意してください。

于 2013-05-30T14:09:05.733 に答える