0

私はLINQに相当するものを書こうとしています

SELECT C1, C2, C3
FROM T1
WHERE T1.C4='xyz' AND
      EXISTS (SELECT 1 FROM T2
             WHERE T1.C17 = T2.C24)
ORDER BY C3

私は EF CTP 5 を使用しているので、dbc という名前の DBContext 変数があります。これには、POCO T1 および T2 に基づく DBSet オブジェクト T1 および T2 が含まれます。

LINQで私は書く

DIM IND = From i In dbc.T1s
          Where i.C4 = "xyz" 
          And (From t In dbc.T2s Where i.C17 = t.C24).Any
          Select i.C1, i.C2, i.C3
          Order By C3

クエリを実行すると、「'T2' 型の定数値を作成できません。このコンテキストではプリミティブ型 ('Int32、String、および Guid' など) のみがサポートされています。」というエラー メッセージが表示されます。

内部式 (LINQ コードの 3 行目) を省略すると、クエリは正常に実行されます。

内部比較の順序を t.C24 = i.C17 に切り替えてみましたが、効果はありませんでした。

では、何が起こっているのでしょうか。どうすれば修正できますか?

4

1 に答える 1

0

dbc が DataContext オブジェクトになるように LINQ to SQL を使用するようにクエリを変更しましたが、すべて問題ありません。LINQ to Entities はまだ (.Net 4 でも) かなり制限されているようです。

于 2011-03-07T08:54:28.623 に答える