簡體   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