代码之家  ›  专栏  ›  技术社区  ›  user9065477

将sql查询转换为LINQ返回始终为空

  •  0
  • user9065477  · 技术社区  · 7 年前

    我有以下sql查询:

    SELECT *
      FROM [Incentivos].[dbo].[Incentivos] AS I 
      INNER JOIN [Incentivos].[dbo].[Captura] AS C ON I.CapturaID = C.ID
      WHERE I.EmpleadoID =4530 and C.mdEstatusRegistro = 1
    

    它工作正常,现在我想将其用于LINQ,所以我尝试

      var ce = _contexto.Empleados.Where(x => x.nCodigoEmpleado == codigoEmpleado)
               .Select(x => x.ID).FirstOrDefault(); //4530 value
    
     var captura = _contexto.Capturas.Where(x => x.mdEstatusRegistro).ToList(); //Captura table
    
      //JOIN
      var Incentivo = _contexto.Incentivos 
      .Join(captura, x => x.CapturaID, y => y.ID, (x, y) => new { x, y })
      .Where(x => x.y.mdEstatusRegistro && x.x.EmpleadoID == ce)
      .Select(b=> b.x).FirstOrDefault();
    

    问题是连接总是为空,我做错了什么?当做

    更新:

     var Incentivo = from incentivos in _contexto.Incentivos
                     join captura in _contexto.Capturas on incentivos.CapturaID equals captura.ID
                     where (incentivos.EmpleadoID == ce) && (captura.mdEstatusRegistro == true)
                     select incentivos;
    

    但现在在查询之后,我想访问Incentivo,如:

    Incentivo.nPorcentajeAJU //Property of Incentivo table
    

    但我不能,我现在如何访问变量?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aleks Andreev Md. Suman Kabir    7 年前

    您的LINQ查询将始终返回 List<Incentivos> ,因此您可以访问 Incentivo.nPorcentajeAJU 在a中 foreach 环然而,由于您声明查询只返回一条记录,所以您必须这样写:

    var Incentivo = (
      from incentivos in _contexto.Incentivos
      join captura in _contexto.Capturas on incentivos.CapturaID equals captura.ID
      where (incentivos.EmpleadoID == ce) && (captura.mdEstatusRegistro == true)
      select incentivos
    ).First<Incentivos>();
    
    int someVar = Incentivo.Some_Property; //Access the property like so