using System.Collections.Generic;
public class ManufacturerInfo
public string Name { get; set; }
public string Url { get; set; }
public static void Main()
var manufacturers = new List<ManufacturerInfo>{
new ManufacturerInfo{Name = "Garmin", Url = "http://www.google.com/0"},
new ManufacturerInfo{Name = "Nike", Url = "http://www.google.com/1"},
new ManufacturerInfo{Name = "New Balance", Url = "http://www.google.com/2"},
new ManufacturerInfo{Name = "Reebok", Url = "http://www.google.com/3"},
new ManufacturerInfo{Name = "Under armour", Url = "http://www.google.com/4"},
new ManufacturerInfo{Name = "xiaomi", Url = "http://www.google.com/5"},
new ManufacturerInfo{Name = "", Url = "http://www.google.com/fault1"},
new ManufacturerInfo{Name = null, Url = "http://www.google.com/fault2"},
foreach (var charGroup in manufacturers.OrderBy(man => man.Name).GroupBy(man => man.Name?.ToUpperInvariant().FirstOrDefault()))
Console.WriteLine(charGroup.Key);
foreach (var manufacturer in charGroup)
Console.WriteLine($"{manufacturer.Name} - {manufacturer.Url}");