var result = items
.GroupBy(x => x.DistributionTime)
.Select(g => new DistributionSummaryOutputDto
{
DistributionTime = g.Key == DateTime.MinValue ? default : g.Key,
DistributionItems = g.ToList()
})
.ToList();
var detailDict = details
.Where(d => d.OfficeSupplyProcurementOrderId.HasValue)
.GroupBy(d => d.OfficeSupplyProcurementOrderId!.Value)
.ToDictionary(g => g.Key, g => g.ToList());
foreach (var item in items)
{
item.OfficeSupplyProcurementDetailList = detailDict.TryGetValue(item.Id, out var list) ? list : [];
}