2011-03-25 120 views
0

我正在使用Subsonic3并希望在两个表之间获得左外连接。下面是测试SQLSubsonic3 LINQ左外连接

SELECT a.* 
FROM vwVendor a 
LEFT OUTER JOIN dbo.pubvenmap b 
on a.vend_no = b.vend_no 
where b.vend_no is null 

我停留在

Dim vendors = From v In vwVendor.All() 
Join m in pubvenmap.All() On v.vend_no Equals m.vend_no 

修订 我也试过以下

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 Studio 2010和.NET 4.0 ......难道这是问题吗?

回答

1

如果LINQ表达阿尔滨贴给你带来麻烦(亚音速的LINQ提供程序并不像LINQ2SQL或实体框架的为完成),要知道,你可以使用SubSonic's fluent query objects也进行左外连接:

​​
+0

我一直在尝试,但我不断收到错误'System.NullReferenceException'发生在SubSonic.Core.dll – 2011-03-25 21:56:24

+0

Can你编辑你的问题,并显示你正在使用的代码,你在那里有一点似乎不完整e,而且这种方法没有。另外,发布更完整的堆栈跟踪可以帮助我们更快地找到确切的问题。谢谢。 – 2011-03-25 22:26:53

+0

另外,是否正常查询适合您?如果我记得正确的话,你昨天在使用视图时遇到了与SubSonic类似的问题。只是试图排除事情。 – 2011-03-25 22:27:52

0

所有常见的LINQ构建体以LINQ 101 Samples为例。具体在这种情况下Left Outer Join

如果我的生锈的VB正确你的代码将是这样的。

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

我得到的错误System.Core.dll发生类型'System.ArgumentException'的第一次机会异常 – 2011-03-25 22:11:21