我正在使用Subsonic3,并希望在两个表之间进行左外连接。这是经过测试的SQL
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 ......这可能是问题吗?
答案 0 :(得分:1)
如果发布的LINQ表达式Albin给您带来麻烦(SubSonic的LINQ提供程序不像Linq2Sql或Entity Framework那样完整),请注意您可以使用SubSonic's fluent query objects执行左外连接:
SubSonic.SqlQuery query = new NorthwindDB.Select
.From<Customer>()
.LeftOuterJoin<Order>();
query.Aggregates = new List<Aggregate> {
new Aggregate(CustomerTable.CustomerNameColumn, AggregateFunction.GroupBy) };
答案 1 :(得分: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