using System.Collections.Generic;
public static void Main()
var model = new Dictionary<string, Dictionary<string, Model>>
new Dictionary<string, Model>
{"SubKey1", new Model { Time = new DateTime(2020, 09, 15)}},
{"SubKey2", new Model { Time = new DateTime(2020, 12, 15) }}
new Dictionary<string, Model>
{"SubKey1", new Model { Time = new DateTime(2020, 11, 15) }},
var result = new Dictionary<string, Model>();
foreach (var subDictionary in model.Values)
foreach (var (key, value) in subDictionary)
if (!result.TryGetValue(key, out var existingValue) || value.Time < existingValue.Time)
public DateTime Time { get; set; }
public override string ToString() => Time.ToString();