using System.Collections.Generic;
public class OneHitWonders
public static List<Song> DetermineOneHitWonders(List<Song> songs)
var songsByArtist = songs.GroupBy(song => song.Artist);
var oneHitWonderGroups = songsByArtist.Where(songGroup => songGroup.Count() == 1);
var oneHitWonders = oneHitWonderGroups.Select(songGroup => songGroup.ElementAt(0));
return oneHitWonders.ToList();
public int Id { get; set; }
public string Name { get; set; }
public string Artist { get; set; }
public static void Main()
var songs = new List<Song>
new Song { Id=1, Name="Foo", Artist="FooFighters" },
new Song { Id=2, Name="TheOne", Artist="OneHitWonder" },
new Song { Id=3, Name="Bar", Artist="FooFighters" },
new Song { Id=4, Name="FooBar", Artist="FooFighters" }
var oneHitWonders = OneHitWonders.DetermineOneHitWonders(songs);
var debugWonders = String.Join("\n", oneHitWonders.Select(song => $"{song.Id} {song.Name} {song.Artist}"));
Console.WriteLine(debugWonders);