public static void Main() {
var sampleData = new [] {
new SampleObject ("Hello World"),
new SampleObject ("I'm awesome"),
new SampleObject ("Nice")
var groupedData = sampleData.GroupBy(x => x.Name.First(), x => x);
var listViewItems = groupedData.SelectMany(x => {
var header = new [] { new ListViewItem(x.Key + "") };
var items = x.Select(y => new ListViewItem(y.Name));
return header.Concat(items);
foreach (var item in listViewItems) {
Console.WriteLine(item.Contents);
public class SampleObject {
public string Name { get; set; }
public SampleObject (string name) {
public class ListViewItem {
public string Contents { get; set; }
public ListViewItem (string contents) {