我是否应始终使用FirstOrDefault来显示未包含在聚合函数中的列?
var creditos = from c in context.creditos
where c.Status == status
join a in context.acreditados on c.IDCredito equals a.IDCredito
group a by a.IDCredito into g
select new
{
Id = g.FirstOrDefault().creditos.IDCredito,
Expediente = g.FirstOrDefault().creditos.Expediente,
Status = (_Credito.Status)g.FirstOrDefault().creditos.Status,
Producto = (_Credito.Producto)g.FirstOrDefault().creditos.Producto,
Monto = g.Sum(Monto => Monto.Cantidad),
Fecha = g.FirstOrDefault().creditos.FechaInicio,
Tasa = g.FirstOrDefault().creditos.TasaInteres,
Plazo = g.FirstOrDefault().creditos.Plazo,
Periodo = g.FirstOrDefault().creditos.Periodo
};
答案 0 :(得分:1)
不,不是真的:你可以使用LastOrDefault
。重要的是获得单个值以与聚合中生成的标量“配对”。
另一种方法是将这些值放在按键分组中:如果您知道它们是相同的,请将它们添加到组的键中,然后在聚合阶段将它们从那里拉出来。
var creditos = from c in context.creditos
where c.Status == status
join a in context.acreditados on c.IDCredito equals a.IDCredito
group a by new {a.IDCredito, a.FechaInicio, a.TasaInteres, a.Plazo, a.Periodo } into g
select new
{
Id = g.FirstOrDefault().creditos.IDCredito,
Expediente = g.FirstOrDefault().creditos.Expediente,
Status = (_Credito.Status)g.FirstOrDefault().creditos.Status,
Producto = (_Credito.Producto)g.FirstOrDefault().creditos.Producto,
Monto = g.Sum(Monto => Monto.Cantidad),
Fecha = g.Key.FechaInicio,
Tasa = g.Key.TasaInteres,
Plazo = g.Key.Plazo,
Periodo = g.Key.Periodo
};
答案 1 :(得分:0)
不,您可以使用任何您喜欢的聚合功能。 Min,Max,Sum等