using System.Collections.Generic;
public static void Main()
var Personals= new List<Persona>();
Personals.Add(new Persona(){ Name= "Tom",Turno="Mañana", Dates=DateTime.Now.Date });
Personals.Add(new Persona(){ Name = "Eder", Turno = "Mañana", Dates = DateTime.Now.Date });
Personals.Add(new Persona(){ Name = "Stiven", Turno = "Tarde", Dates = DateTime.Now.Date });
Personals.Add(new Persona(){ Name= "Tom",Turno="Tarde", Dates=DateTime.Now.AddDays(-1).Date });
Personals.Add(new Persona(){ Name = "Eder", Turno = "Tarde", Dates = DateTime.Now.AddDays(-1).Date });
Personals.Add(new Persona(){ Name = "Stiven", Turno = "Mañana", Dates = DateTime.Now.AddDays(-1).Date });
var dates = Personals.Select(a => a.Dates).Distinct().ToList();
var fin = new List<FechaTurno>();
foreach (var i in dates){
var soloTurn = Personals.Where(a => a.Dates == i).Select(a => a.Turno).Distinct().ToList();
var tur = new List<TurnoPersonas>();
foreach (var j in soloTurn){
tur.Add(new TurnoPersonas(){ Turno = j, Personas = Personals.Where(a => a.Turno == j && a.Dates == i).Select(a => a.Name).ToList() });
fin.Add(new FechaTurno(){ Fecha = i, Turno = tur });
string json = JsonConvert.SerializeObject(fin, Formatting.Indented);
public DateTime Fecha { get; set; }
public List<TurnoPersonas> Turno { get; set; }
public class TurnoPersonas
public string Turno { get; set; }
public List<string> Personas { get; set; }
public string Identificacion { get; set; }
public string Nombre { get; set; }
public string Name { get; set; }
public string Turno { get; set; }
public DateTime Dates { get; set; }