繁体   English   中英

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

[英]Getting the largest value from an object in a list in another list [C#]

我有一个大问题。

我有一个 TaskGroup 对象。 每个 TaskGroup 都有:一个“Task”对象和一个 List < TaskGroup > 。 (其中有自己的对象列表)。 它应该是一棵树。

有一个“TaskGroup”对象,其中包含“List”。 我需要从“TaskGroup”列表中每个对象的“Task”对象中获取单个最大日期值。

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

在图中 - 有“我的对象”,我必须得到标记为红色的最大日期。

在此处输入图片说明

有谁知道如何做到这一点? 谢谢

要从直接子级获取最大日期,您只需使用一个简单的 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM