You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中基于DataTable编写LINQ查询按站点返回记录?

按站点返回记录的LINQ查询实现需求与代码调整

需求说明

  • 原本计划通过foreach循环遍历所有可用站点
  • 现需新增基于DataTable的LINQ查询,实现按站点分组返回记录
  • 仅当reportCode为"A"(代表“按站点”)时执行该LINQ逻辑
  • 此前通过if语句的实现未达到预期效果,现有VB代码逻辑如下:

现有VB代码

If Site = "All Sites" Or Site = "" And siteFilter = "B" Then
    If reportCode = "A" Then
        reportCode = "D"
    ElseIf reportCode = "B" Then
        reportCode = "E"
    Else
        reportCode = "F"
    End If
End If
dt = rb.GetTop20ProductsReportDT(startDate, endDate, SiteCodeList, Site, TopNum, reportCode, Session("GroupName"))
Session("CPTop20ProductsDT") = dt
' ... 需要在reportCode为"A"时添加按站点返回记录的LINQ查询

解决方案代码

注意:原有逻辑中会修改reportCode的值,因此需要先保存原始的reportCode用于后续判断。假设DataTable中存储站点信息的字段名为SiteCode,请根据实际表结构调整:

' 先保存原始的reportCode,避免后续修改后无法判断
Dim originalReportCode As String = reportCode

' 保留原有代码逻辑
If Site = "All Sites" Or (Site = "" And siteFilter = "B") Then
    If reportCode = "A" Then
        reportCode = "D"
    ElseIf reportCode = "B" Then
        reportCode = "E"
    Else
        reportCode = "F"
    End If
End If

dt = rb.GetTop20ProductsReportDT(startDate, endDate, SiteCodeList, Site, TopNum, reportCode, Session("GroupName"))

' 当原始reportCode为"A"时,执行按站点分组的LINQ查询
If originalReportCode = "A" Then
    ' 按站点字段分组,提取每组的记录
    Dim siteGroups = From row In dt.AsEnumerable()
                     Group row By site = row.Field(Of String)("SiteCode") Into SiteGroup = Group
    
    ' 将分组后的记录合并为一个新的DataTable(若需按站点单独处理,直接遍历siteGroups即可)
    Dim perSiteDT As New DataTable()
    For Each group In siteGroups
        perSiteDT.Merge(group.SiteGroup.CopyToDataTable())
    Next
    
    ' 更新Session中的DataTable
    Session("CPTop20ProductsDT") = perSiteDT
Else
    Session("CPTop20ProductsDT") = dt
End If

关键说明

  1. 必须先保存原始的reportCode,因为原有逻辑会根据条件修改该值,导致后续无法判断是否需要执行按站点的LINQ查询
  2. 代码中假设站点字段名为SiteCode,请根据实际DataTable的字段名替换
  3. 如果需要对每个站点的记录单独处理(比如生成独立报表),可以直接遍历siteGroups集合,无需合并为单个DataTable

内容的提问来源于stack exchange,提问作者Yolula Sisilana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:05:21