C# 在联接中选择多个字段

C# 在联接中选择多个字段,c#,linq,join,C#,Linq,Join,我正在尝试按Magnitude分组并返回一个匿名类型,其中包含字段Magnitude、CalibracionID和MaxDate,以便随后按CalibracionVerificationId加入,但下面的linq查询不起作用: (from c in equipo.CalibracionVerificacion join c2 in (from c3 in equipo.CalibracionVerificacion where c3.equipoI

我正在尝试按Magnitude分组并返回一个匿名类型,其中包含字段Magnitude、CalibracionID和MaxDate,以便随后按CalibracionVerificationId加入,但下面的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);

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

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

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; }
}
void Main()
{
var CalibracionVerificacion=新列表();
var结果=CalibracionVerification
.加入(
CalibracionVerification.Where(x=>!String.IsNullOrWhiteSpace(x.magnitudId)),
c1=>c1.等轴面,
c2=>c2.等轴面,
(c1,c2)=>新的{c1,c2})
.GroupBy(x=>x.c2.magnitude)
.选择(g=>new
{
Magnitude=g.键,
CalibracionID=g.Select(x=>x.c1.CalibracionVerificationId),
MaxDate=g.Max(x=>x.c1.fechaPrevista)
})
.Min(g=>g.MaxDate);
}
阶级装备{
公共整型等值面{get;set;}
公共字符串magnitudId{get;set;}
public int-calibracionVerificacionId{get;set;}
公共int fechaPrevista{get;set;}
}

代码在这里没有帮助。要共享数据结构的架构吗?还有一个预期结果的例子。如果上述问题解决了你的问题,那么请将其标记为解决方案,如果没有,那么请让我知道我可以如何帮助你。