Subsonic 3 中的左连接
我正在尝试使用 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};
我正在使用 subsonic 3,这是 Rob 提供的最新 GIT 版本,但是当我尝试左连接时,出现错误,请参见下文。 我已经搜索过但没有找到任何解决方案。
谁能向我解释为什么会出现这个错误以及如何修复它? 谢谢
类型“System.Collections.Generic.IEnumerable1[GetAQuote.Post]”的表达式不能用于方法“System.Linq.IQueryable1[<”的类型“System.Linq.IQueryable1[GetAQuote.Post]”的参数;>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.IEnumerable
1%5BGetAQuote.Quote%5D%5D%5D%5D">GetAQuote.Post,System.Collections.Generic.IEnumerable1[ GetAQuote.Quote]]] GroupJoin[Post,Quote,Int32,<>f__AnonymousType22'`
I'm trying to do a left join in subsonic 3 using linq but it doesn't seem to work, I get a big error.
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};
I'm using subsonic 3, latest GIT version from Rob, but I'm getting an error, see below, when I try a left join.
I have searched but I didn't found any solution.
Can anyone explain to me why the error and how to fix it?
Thanks
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.IEnumerable
1%5BGetAQuote.Quote%5D%5D%5D%5D">GetAQuote.Post,System.Collections.Generic.IEnumerable1[GetAQuote.Quote]]] GroupJoin[Post,Quote,Int32,<>f__AnonymousType22'`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要解决 Subsonic3 中的 Left Join,您只需在 linq 查询上设置 .AsEnumerable() 方法。
试试这个
categories.AsEnumerable()或products.AsEnumerable()
to solve Left Join in Subsonic3 you just need to set .AsEnumerable() method on your linq query.
Try this
categories.AsEnumerable() or products.AsEnumerable()