【问题标题】:in linq to entities, how to do an inner EXISTS (SELECT 1 FROM... type of query?在 linq to entity 中,如何执行内部 EXISTS (SELECT 1 FROM... 类型的查询?
【发布时间】:2011-03-06 16:23:11
【问题描述】:

我正在尝试编写与

等效的 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,没有效果。

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

【问题讨论】:

    标签: .net vb.net linq-to-entities entity-framework-ctp5 vb.net-2010


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多