我正在尝试按magnitudId分组并返回包含字段MagnitudID,CalibracionID和MaxDate的匿名类型,以便随后通过calibracionVerificacionId加入,但在linq以下查询不起作用:
(from c in equipo.CalibracionVerificacion
join c2 in
(from c3 in equipo.CalibracionVerificacion
where c3.equipoId == equipo.equipoId && !(c3.magnitudId == null || c3.magnitudId.Trim() == string.Empty)
group c3 by c3.magnitudId into cgroup
select new
{
MagnitudID = cgroup.Key,
CalibracionID = cgroup.Select(x => x.calibracionVerificacionId),
MaxDate = cgroup.Max(x => x.fechaPrevista),
}
) on c.calibracionVerificacionId equals c2.CalibracionID
where c.equipoId == equipo.equipoId
select c).Min(d => d.fechaPrevista);
答案 0 :(得分:0)
不清楚您要问什么。看起来您正在加入相同的列表,然后分组,然后选择最大日期的最小值?
如果是这样,也许这对您有用:
void Main()
{
var CalibracionVerificacion = new List<Equipo>();
var results = CalibracionVerificacion
.Join(
CalibracionVerificacion.Where(x => !String.IsNullOrWhiteSpace(x.magnitudId)),
c1 => c1.equipoId,
c2 => c2.equipoId,
(c1, c2) => new {c1, c2})
.GroupBy(x => x.c2.magnitudId)
.Select(g => new
{
MagnitudID = g.Key,
CalibracionID = g.Select(x => x.c1.calibracionVerificacionId),
MaxDate = g.Max(x => x.c1.fechaPrevista)
})
.Min(g => g.MaxDate);
}
class Equipo {
public int equipoId { get; set; }
public string magnitudId { get; set; }
public int calibracionVerificacionId { get; set; }
public int fechaPrevista { get; set; }
}