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 对象 T1s 和 T2s。

在 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 代码中的第三行)时,查询运行良好。

我尝试将内部比较的顺序切换为 t.C24 = i.C17,但没有效果。

那么发生了什么,我该如何解决?

4

1 回答 1

0

我将查询更改为使用 LINQ to SQL,这样 dbc 是一个 DataContext 对象,一切都很好。似乎 LINQ to Entities 仍然(即使在 .Net 4 中)非常有限。

于 2011-03-07T08:54:28.623 回答