using System.Collections.Generic;
using System.ComponentModel;
public static void Main()
List<Profile> profiles = GenerateData(10);
var groupedProfiles = profiles.GroupBy(x => new { x.Name, x.Messagedate }).Select(p => new Profile(
p.Sum(x => x.LengthMessage),
p.Sum(x => x.LengthAudio),
p.Sum(x => x.LengthVideo),
p.Sum(x => x.PictureCount)
Console.WriteLine("Grouped data:");
ShowData(groupedProfiles);
private static void ShowData(IEnumerable<Profile> profiles)
foreach (var item in profiles)
private static List<Profile> GenerateData(int n)
List<string> names = new List<string>();
List<Profile> result = new List<Profile>();
for (int i = 0; i < n; i++)
new Profile(names[rand.Next(names.Count - 1)],
DateTime.Today.AddDays(-1 * rand.Next(2)),
public Profile(string name, DateTime messagedate, int lengthMessage, int lengthVideo, int lengthAudio, int pictureCount)
Messagedate = messagedate;
LengthMessage = lengthMessage;
LengthVideo = lengthVideo;
LengthAudio = lengthAudio;
PictureCount = pictureCount;
public string Name { get; set; }
public DateTime Messagedate { get; set; }
public int LengthMessage { get; set; }
public int LengthVideo { get; set; }
public int LengthAudio { get; set; }
public int PictureCount { get; set; }
public override string ToString()
return $"{Name} {Messagedate} Message:{LengthMessage} Video: {LengthVideo} Audio:{LengthVideo} Picture:{PictureCount}";