从另一个列表中的列表中的对象获取最大值[C#]

从另一个列表中的列表中的对象获取最大值[C#],c#,.net,linq,C#,.net,Linq,我有个大问题 我有一个任务组对象。每个工作组有: “任务”对象和列表。(其中有一个对象列表)。它应该是一棵树 具有包含“列表”的“任务组”对象。 我需要从“任务组”列表中每个对象的“任务”对象中获取单个最大日期值 public class TaskGroup { public ProjectTask Task { get; set;} public List<TaskGroup> ChildTask { get; set; } = new List<TaskGroup&

我有个大问题

我有一个任务组对象。每个工作组有: “任务”对象和列表。(其中有一个对象列表)。它应该是一棵树

具有包含“列表”的“任务组”对象。 我需要从“任务组”列表中每个对象的“任务”对象中获取单个最大日期值

public class TaskGroup
{
  public ProjectTask Task { get; set;}
  public List<TaskGroup> ChildTask { get; set; } = new List<TaskGroup>();
}
public class Task
{
  public int Id { get; set;}
  public DateTime Date { get; set; }
}
公共类任务组
{
公共项目任务任务{get;set;}
公共列表子任务{get;set;}=new List();
}
公开课任务
{
公共int Id{get;set;}
公共日期时间日期{get;set;}
}
在图表中,有了“我的对象”,我必须得到用红色标记的最大日期


有人知道怎么做吗?感谢

要从直系子女那里获得最大的日期,您只需使用一个简单的Linq语句:

var maxDate = taskGroup.ChildTask.Max(c => c.Task.Date);
要从主任务组下的所有任务组获取最大日期,可以递归检查所有子任务组的最大日期:

static DateTime GetMaxDate(TaskGroup group)
{
    if (group == null) return DateTime.MinValue;

    var maxDate = group.Task?.Date ?? DateTime.MinValue;

    foreach (var child in group.ChildTask)
    {
        if (child.Task?.Date > maxDate) maxDate = child.Task.Date;

        foreach (var taskGroup in child.ChildTask)
        {
            var childMax = GetMaxDate(taskGroup);
            if (childMax > maxDate) maxDate = childMax.Date;
        }
    }

    return maxDate;
}

仅供参考,集合名称应为复数形式,如
ChildTasks
您只需要进入一个级别还是可以有更多级别?像task.ChildTask.First().ChildTask->可以有你想要的最大日期吗?这包括当前的
TaskGroup.task
还是只有子任务?我在模型类“TaskGroup”中,我想做一个内部方法,从List->task->date中获取最大日期。整个名单只有一个日期