如果 select 新 linq 中的结果 < 0

If result is < 0 in select new linq

我有下一期,我有下一个代码

var creditos = from c in db.creditos 
  join s in db.solicitudDelCliente on c.SolicitudDelClienteID equals s.ID
  join cl in db.cliente on s.ClienteID equals cl.ID
  where c.Eliminado != true && cl.Eliminado != true && c.NegocioID == negocio_id
  select new
  {
      c.ID,
      cl.NumeroCliente,
      c.Consecutivo,
      NegocioID = negocio_id,
      cl.NombreCompleto,
      c.FechaAlta,
      c.CapitalPrestado,
      c.Vencido,
      c.Quebranto,
      c.Juridico,
      c.Liquidado,
      c.Reestructura,
      c.Eliminado,
      c.Estatus,
      CapitalPagado = db.movimientos.Where(mm=>mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 2).Select(mm=>mm.Monto).DefaultIfEmpty(0).Sum(),
      InteresesPagados = db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 4).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum(),
      SaldoInsoluto = db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.CategoriaMovimientosID == 1).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum() -
                    db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 2).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum(),
      SaldoDeudorTotal = (db.movimientos.Where(mm => mm.CreditoID == c.ID
           && mm.Eliminado != true 
           && mm.DepositoMovimientoID == null 
           && mm.CategoriaMovimientosID != 2)
        .Select(mm => mm.Monto).DefaultIfEmpty(0).Sum() 
          -  db.movimientos.Where(mm => mm.CreditoID == c.ID
             && mm.Eliminado != true 
             && mm.DepositoMovimientoID != null 
             && mm.CategoriaMovimientosID != 1)
        .Select(mm => mm.Monto).DefaultIfEmpty(0).Sum()), 
      Migrado = c.Migracion
  };

在某些查询结果中,"SaldoDeudorTotal"的值为负数,我想控制该值,即如果值为-0则return0为零。

您可以使用扩展程序

public static class MyExtension 
{
    public static int ToPositiveInt(this int value)
    {
        if (value < 0)
            return 0;
        else
            return value
    }
}

并在您的 SaldoDeudorTotal 条件结束时调用它

SaldoDoeudorTotal = (db.movimientos.Where(mm => mm.CreditoID == c.ID
           && mm.Eliminado != true 
           && mm.DepositoMovimientoID == null 
           && mm.CategoriaMovimientosID != 2).ToPositiveInt()
var creditos = from c in db.creditos 
  join s in db.solicitudDelCliente on c.SolicitudDelClienteID equals s.ID
  join cl in db.cliente on s.ClienteID equals cl.ID
  where c.Eliminado != true && cl.Eliminado != true && c.NegocioID == negocio_id
  let total = (db.movimientos.Where(mm => mm.CreditoID == c.ID
           && mm.Eliminado != true 
           && mm.DepositoMovimientoID == null 
           && mm.CategoriaMovimientosID != 2)
        .Select(mm => mm.Monto).DefaultIfEmpty(0).Sum() 
          -  db.movimientos.Where(mm => mm.CreditoID == c.ID
             && mm.Eliminado != true 
             && mm.DepositoMovimientoID != null 
             && mm.CategoriaMovimientosID != 1)
        .Select(mm => mm.Monto).DefaultIfEmpty(0).Sum())

  select new
  {
      c.ID,
      cl.NumeroCliente,
      c.Consecutivo,
      NegocioID = negocio_id,
      cl.NombreCompleto,
      c.FechaAlta,
      c.CapitalPrestado,
      c.Vencido,
      c.Quebranto,
      c.Juridico,
      c.Liquidado,
      c.Reestructura,
      c.Eliminado,
      c.Estatus,
      CapitalPagado = db.movimientos.Where(mm=>mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 2).Select(mm=>mm.Monto).DefaultIfEmpty(0).Sum(),
      InteresesPagados = db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 4).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum(),
      SaldoInsoluto = db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.CategoriaMovimientosID == 1).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum() -
                    db.movimientos.Where(mm => mm.CreditoID == c.ID && mm.Eliminado != true && mm.DepositoMovimientoID != null && mm.CategoriaMovimientosID == 2).Select(mm => mm.Monto).DefaultIfEmpty(0).Sum(),
      SaldoDeudorTotal = total < 0 ? 0 : total, 
      Migrado = c.Migracion
  };