首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Subsonic3 LINQ左外连接

Subsonic3 LINQ左外连接
EN

Stack Overflow用户
提问于 2011-03-25 20:12:11
回答 2查看 517关注 0票数 0

我正在使用Subsonic3,希望在两个表之间得到一个左外接。下面是经过测试的SQL

代码语言:javascript
复制
SELECT a.* 
FROM vwVendor a
LEFT OUTER JOIN dbo.pubvenmap b
on a.vend_no = b.vend_no
where b.vend_no is null

我被困在

代码语言:javascript
复制
Dim vendors = From v In vwVendor.All()
Join m in pubvenmap.All() On v.vend_no Equals m.vend_no

更新了--我还尝试了以下方法

代码语言:javascript
复制
Dim vendors = New SubSonic.Query.Select(SubSonic.Query.Aggregate.GroupBy("vend_no")).From(Of vwVendor).LeftOuterJoin(Of mac_pubvenmap)().ExecuteTypedList(Of vwVendor)()

但是得到错误

System.InvalidOperationException类型的第一次例外发生在SubSonic.Core.dll中

我正在使用Visual 2010和.NET 4.0...could,这是问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-25 21:18:00

如果LINQ表达式Albin给您带来麻烦(亚音速的LINQ提供程序不如Linq2Sql或实体框架的那样完整),请注意,您可以使用亚音速的fluent查询对象执行左外接:

代码语言:javascript
复制
SubSonic.SqlQuery query = new NorthwindDB.Select
  .From<Customer>()
  .LeftOuterJoin<Order>();
  query.Aggregates  = new List<Aggregate> { 
    new Aggregate(CustomerTable.CustomerNameColumn, AggregateFunction.GroupBy) };
票数 1
EN

Stack Overflow用户

发布于 2011-03-25 20:25:32

所有常见的LINQ结构都以LINQ 101样品为例。特别是在本例中,左外连接

如果我把我生疏的VB做对了,你的代码就会是这样的。

代码语言:javascript
复制
Dim vendors = From v In vwVendor.All() _
            Group Join m in pubvenmap.All() On v.vend_no Equals m.vend_no Into Group _
            From m In Group.DefaultIfEmpty() _
            Select v
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5437615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档