using System.Collections.Generic;
public static void Main()
List<Profile> profiles = new List<Profile>();
profiles.Add(new Profile() { profilename = "prof1", score = 15, date = new DateTime(2015, 10, 01) });
profiles.Add(new Profile() { profilename = "prof1", score = 15, date = new DateTime(2015, 10, 02) });
profiles.Add(new Profile() { profilename = "prof1", score = 18, date = new DateTime(2015, 10, 03) });
profiles.Add(new Profile() { profilename = "prof1", score = 24, date = new DateTime(2015, 10, 25) });
profiles.Add(new Profile() { profilename = "prof2", score = 69, date = new DateTime(2015, 10, 01) });
profiles.Add(new Profile() { profilename = "prof2", score = 70, date = new DateTime(2015, 10, 02) });
profiles.Add(new Profile() { profilename = "prof3", score = 115, date = new DateTime(2015, 10, 01) });
profiles.Add(new Profile() { profilename = "prof3", score = 115, date = new DateTime(2015, 10, 02) });
profiles.Add(new Profile() { profilename = "prof2", score = 73, date = new DateTime(2015, 10, 03) });
profiles.Add(new Profile() { profilename = "prof3", score = 119, date = new DateTime(2015, 10, 03) });
profiles.Add(new Profile() { profilename = "prof2", score = 98, date = new DateTime(2015, 10, 25) });
profiles.Add(new Profile() { profilename = "prof3", score = 187, date = new DateTime(2015, 10, 25) });
.GroupBy(p => p.profilename)
firstscore = g.OrderBy(p => p.date).First().score,
lastscore = g.OrderByDescending(p => p.date).First().score
.Select(x => new { x.profilename, diff = x.lastscore - x.firstscore })
foreach (var item in result)
public string profilename { get; set; }
public DateTime date { get; set; }
public int score { get; set; }