【问题标题】:select multiple fields in join在连接中选择多个字段
【发布时间】:2020-01-14 12:26:04
【问题描述】:

我正在尝试按 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);

【问题讨论】:

  • 代码在这里没有帮助。想要分享您的数据结构的架构?以及预期结果的示例。

标签: c# linq join


【解决方案1】:

不清楚你在问什么。看起来您自己加入了同一个列表,然后分组,然后选择最大日期的最小值?

如果是这样,也许这对你有用:

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; }
}

【讨论】:

  • 如果以上解决了您的问题,请将其标记为解决方案,如果没有,请告诉我如何提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多