在Linq Query VB.NET中包括Select Count(*)

时间:2018-05-08 14:29:39

标签: vb.net linq

我在MS Access中有一个查询,我正在尝试转换为vb.net。我正在迁移代码以使用Linq。

vba查询:

    SELECT SS,TitleNo,(select count(*) from [VendorRpts] where Delivery=5 and not(OrderDate is null) and applicationsidnumber=AIN
and not(VendServCode=VendSCID )) as PrefVendorCount 
From applications where applicationsidnumber=AIN

我开始写它:

Dim myApps = (From Apps In dc.APPLICATIONs
                      Where Apps.APPLICATIONSIDNUMBER = AIN
                      Select Apps.SS, Apps.TITLENO, )

但我不知道如何计算。 有人可以帮忙吗?

由于

EDIL

1 个答案:

答案 0 :(得分:1)

每个记录的计数总是相同的,所以在LINQ中我会使用单独的查询:

Dim vendorReports = From vr In VendorRpts 
                    Where vr.Delivery = 5 AndAlso 
                    vr.OrderDate.HasValue AndAlso 
                    vr.ApplicationsIdNumber = AIN AndAlso
                    vr.VendServCode <> VendSCID
Dim vendorReportsCount = vendorReports.Count()

Dim myApps = From Apps In dc.APPLICATIONs
             Where Apps.APPLICATIONSIDNUMBER = AIN
             Select Apps.SS, Apps.TitleNo, prefVendorCount = vendorReportsCount

请注意,如果在LINQ中需要correlated subquery,则以下是正确的语法:

Dim myApps = From Apps In dc.APPLICATIONs
             Where Apps.APPLICATIONSIDNUMBER = AIN
             Let vendorReports = From vr In VendorRpts 
                                 Where vr.Delivery = 5 AndAlso 
                                 vr.OrderDate.HasValue AndAlso 
                                 vr.ApplicationsIdNumber = Apps.AIN AndAlso
                                 vr.VendServCode <> VendSCID
             Select Apps.SS, Apps.TitleNo, prefVendorCount = vendorReports.Count()