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

VB.NET中LINQ左外连接报错:company未声明或不在当前作用域

问题解决:LINQ Group Join 编译错误及数据关联查询

错误原因

你写的Group Join语法中,Into Group之后原company变量已不在当前作用域——Group Join会将匹配的公司记录归集到Group集合中,无法直接引用原company变量。

正确的LINQ查询写法

方式1:逐个映射字段(推荐,适配DataGridView绑定)

Dim result = (From supplier In lstItemBarcodes 
              Group Join company In lstCompanies 
              On supplier.cnyID Equals company.CompanyID 
              Into matchedCompanies = Group
              Select New With {
                  ' 保留Item表的所有字段
                  supplier.Id,
                  supplier.Description,
                  supplier.cnyID,
                  ' 获取对应公司描述,无匹配时显示空字符串
                  .CompanyDesc = If(matchedCompanies.Any(), matchedCompanies.First().companyDesc, String.Empty)
              }).ToList()

方式2:保留完整Item对象,附加公司描述

Dim result = (From supplier In lstItemBarcodes 
              Group Join company In lstCompanies 
              On supplier.cnyID Equals company.CompanyID 
              Into matchedCompanies = Group
              Select New With {
                  .Item = supplier,
                  .CompanyDesc = If(matchedCompanies.Any(), matchedCompanies.First().companyDesc, String.Empty)
              }).ToList()

补充说明

  • Into matchedCompanies = Group:将与当前Item匹配的Company记录存入matchedCompanies集合(因cnyID是外键,通常集合仅含一条记录)
  • If(matchedCompanies.Any(), ...):处理无匹配公司的场景,避免空引用异常
  • 绑定DataGridView时,方式1可直接绑定result,列会自动对应字段;方式2需在列的DataPropertyName中指定Item.Id、CompanyDesc这类路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:34:58