【问题标题】:Left Join in Subsonic 3左加入亚音速 3
【发布时间】:2010-03-27 13:42:46
【问题描述】:

我正在尝试使用 linq 在 subsonic 3 中进行左连接,但它似乎不起作用,我遇到了一个大错误。

        var post = from p in Post.All()
                    join q in Quote.All() on p.ID equals q.PostID into pq
                    where p.ID == id.Value
                    from qt in pq.DefaultIfEmpty()
                    select new {p, qt};

我正在使用 Rob 提供的最新 GIT 版本的 subsonic 3,但是当我尝试左连接时出现错误,请参见下文。 我已经搜索过,但没有找到任何解决方案。

谁能向我解释为什么会出现错误以及如何解决它? 谢谢

Expression of type 'System.Collections.Generic.IEnumerable1[GetAQuote.Post]' cannot be used for parameter of type 'System.Linq.IQueryable1[GetAQuote.Post]' of method 'System.Linq.IQueryable1[<>f__AnonymousType221[GetAQuote.Post], System.Collections.Generic.IEnumerable1%5BGetAQuote.Quote%5D, System.Linq.Expressions.Expression1[System.Func2%5BGetAQuote.Post,System.Int32%5D%5D, System.Linq.Expressions.Expression1[System.Func2%5BGetAQuote.Quote,System.Int32%5D%5D, System.Linq.Expressions.Expression1[System.Func3%5BGetAQuote.Post,System.Collections.Generic.IEnumerable1[GetAQuote.Quote],<>f__AnonymousType22%5BGetAQuote.Post,System.Collections.Generic.IEnumerable1%5BGetAQuote.Quote%5D%5D%5D%5D">GetAQuote.Post,System.Collections.Generic.IEnumerable1[GetAQuote.Quote]]] GroupJoin[Post,Quote,Int32,f__AnonymousType22 '`

【问题讨论】:

    标签: linq subsonic3 left-join


    【解决方案1】:

    要解决 Subsonic3 中的 Left Join,您只需在 linq 查询上设置 .AsEnumerable() 方法。

    试试这个

    categories.AsEnumerable() 或 products.AsEnumerable()

    【讨论】:

    • 当我尝试这个时,我克服了错误,但生成的数据库活动是从两个表中全选,显然所有连接逻辑都在核心中完成。这不对吧?
    • @Kelly,我一直在研究 Subsonic 3 的核心,是的,这似乎是正在发生的事情。 .AsEnumerable 显然等同于.ToList,因为它绝对可以从数据库中获取所有内容。此外,Subsonic 中似乎没有任何代码来处理嵌套查询
    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多