【问题标题】:how solve the OUTER APPLY is not supported problem in this LINQ query如何解决此 LINQ 查询中不支持 OUTER APPLY 的问题
【发布时间】:2013-03-02 01:43:23
【问题描述】:

我将 LINQ to Entities 与 dotConnect for Oracle 一起使用,我得到一个 OUTER APPLY is not supported 异常,这个非常简单的 LINQ 查询:

from intervenant in Intervenants
select new
{
    intervenant.Code,
    intervenant.Nom,
    Municipalite = intervenant.Adresses.Any() ? intervenant.Adresses.FirstOrDefault().Municipalite : string.Empty,
    CodePostal = intervenant.Adresses.Any() ? intervenant.Adresses.FirstOrDefault().CodePostal : string.Empty
}

我应该如何构建我的查询来解决这个问题?

非常感谢您的帮助!

更新

我已经更新了我的 devArt dotConnect for Oracle 提供程序,它已经解决了这个问题。它不再对此 LINQ 查询执行 OUTER APPLY。

但是我还有一个问题。这个 linq 查询为 Telerik Grid 提供服务,而 Outer Apply 问题又回来了。不确定 Grid 在内部做了什么,但他正在做一些供应商不支持的事情。

【问题讨论】:

    标签: c# .net oracle .net-4.0 linq-to-entities


    【解决方案1】:

    当你这样做时会发生什么?

    from intervenant in Intervenants
    select new
    {
        intervenant.Code,
        intervenant.Nom,
        Municipalite = intervenant.Adresses.FirstOrDefault().Municipalite,
        CodePostal = intervenant.Adresses.FirstOrDefault().CodePostal
    }
    

    然后你可以将它嵌套在一个将空值转换为空字符串的 LINQ 表达式中吗?

    【讨论】:

    • 那么是 .Any() 还是 .FirstOrDefault() 创建了 CROSS APPLY 情况?
    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2020-05-05
    • 2021-10-04
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多