using System.Collections;
using System.Collections.Generic;
public string Name { get; set; }
public int AssessNumber { get; set; }
public decimal Score { get; set; }
public override string ToString()
return Name + "\t" + AssessNumber + "\t" + Score;
public static class Program
public static void Main()
var data = new List<Data>
{new Data { Name= "John", AssessNumber = 1,Score=90 }},
{new Data { Name= "John", AssessNumber = 2,Score=88 }},
{new Data { Name= "John", AssessNumber = 3,Score=67 }},
{new Data { Name= "Steve", AssessNumber = 1,Score=98 }},
{new Data { Name= "Steve", AssessNumber = 2,Score=90 }},
var results = data.GroupBy(x => x.Name).Select(x => new Data
AssessNumber = x.Max(z => z.AssessNumber),
Score = x.Average(z => z.Score)
public static void Dump(this IEnumerable<Data> query)