.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
					
public class Program
{
	class Record
	{
		public int id {get; set;}
		public string name {get; set;}
		public DateTime date {get; set;}
	}
	
	public static void Main()
	{
		var records = new List<Record>()
		{
			new Record()
			{
				id = 1,
                name = "abc",
                date = new DateTime(2020, 8, 8)
			},
			new Record()
			{
				id = 2,
                name = "def",
                date = new DateTime(2020, 8, 9)
			},
			new Record()
			{
				id = 1,
                name = "def",
                date = new DateTime(2020, 8, 9)
			}
		};
		
		var nested = records.GroupBy(r => r.id).Select(g =>
			new
			{
			   id = g.Key,
			   children = g.Select(cr =>
			   new 
			   {
				 name = cr.name,
				 date = cr.date
			   }).ToList()
			}).ToList();
		
		foreach (var parent in nested)
		{
			Console.WriteLine($"Parent #{parent.id}");

			Console.WriteLine("Children");
			
			foreach (var child in parent.children)
			{
				Console.WriteLine("Child");
				Console.WriteLine(child.name);
				Console.WriteLine(child.date);
			}
		}
	}
}
;