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

如何将company_ID参数传入LINQ查询替换硬编码值

解决方案

直接把硬编码的1替换为方法参数company_ID即可,注意处理左连接后的空值情况(比如Fzone的左连接结果i可能为null,需要先判断null再比较CompanyId)。

修改后的完整代码:

public Task<List<RsvItemsViewModel>> GetReservations(int company_ID)
{
    try
    {
        return ((from a in gTravelDbContext.Set<Frsvitem>()
                    join d in gTravelDbContext.Set<Freserv>()
                        on a.Rsinum equals d.Rsvnum into gd 
                        from d in gd.Where(p1 => p1.CompanyId == company_ID)

                    join c in gTravelDbContext.Set<Fsupplier>()
                        on a.SupplId equals c.SupplId into gc 
                        from c in gc.Where(p1 => p1.CompanyId == company_ID)
                    
                    join i in gTravelDbContext.Set<Fzone>()
                        on a.Rsizone equals i.Zoneid into gi
                    from i in gi.DefaultIfEmpty() 
                    where i == null || i.CompanyId == company_ID
                    
                    join g in gTravelDbContext.Set<Fservtype>()
                        on a.Rsisertype equals g.Stypecode
                    
                    join b in gTravelDbContext.Set<Fcustomer>()
                         on d.CustId equals b.CustId
                    
                    join e in gTravelDbContext.Set<Fpaykind>()
                          on d.Rsvpaymethod equals e.Payid into ge
                    from e in ge.DefaultIfEmpty()
                    
                    join f in gTravelDbContext.Set<Fsalesman>()
                          on d.Rsvsalescode equals f.Salescode into gf
                    from f in gf.DefaultIfEmpty()
                    
                    join h in gTravelDbContext.Set<Fpinake>()
                          on d.Rsvakirosi equals h.Tblid into gh
                    from h in gh.Where(p => p.Tblcd == "yesno")
                    
                    select new RsvItemsViewModel
                    {
                        Rsinum = a.Rsinum,
                        Stypename = g.Stypename,
                        Cuname = b.Cuname,
                        Rsvcuname = d.Rsvcuname,
                        Sumame = c.Suname,
                        Rsvakirosi = d.Rsvakirosi,
                        Yesno = h.Tbltext,
                        Paytext = e.Paytext,
                        Salesname = f.Salesname,
                        Stypegroup = g.Stypegroup,
                        Company_id = d.CompanyId.GetValueOrDefault(),
                        Zonename = i?.Zonename, // 加空安全访问避免i为null时报错
                        Rsisertype = a.Rsisertype,
                        Suppl_id = a.SupplId,
                        Xrhsh = d.Xrhsh,
                        Bpar_id = a.BparId
                    }
                ).ToListAsync());
    }
    catch (Exception)
    {
        throw;
    }
}

修改点说明:

  • 将所有Where子句中硬编码的1替换为方法传入的company_ID参数
  • 针对Fzone的左连接(DefaultIfEmpty()),修改where条件为i == null || i.CompanyId == company_ID,防止i为null时触发空引用异常
  • 额外优化:Zonename = i.Zonename改为Zonename = i?.Zonename,避免空引用问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:30:51