public static void Main()
var list = Enumerable.Range(1,100).Select(i => new User{ Name = $"Name #{i%10}", Prop1 = i, Prop2 = 10*i, Prop3 = 100*i}).ToList();
var dictionary = list.Select(item => new { Key = item.Name, Item = item}).GroupBy(e => e.Key).OrderBy(e => e.Key).ToDictionary(e => e.Key, e => e.ToList());
foreach(var pair in dictionary)
var values = string.Join(", ", pair.Value.Select(e => e.ToString()));
Console.WriteLine($"Key: {pair.Key}, Values: {values}");
public string Name { get; set; }
public int Prop1 { get; set; }
public int Prop2 { get; set; }
public int Prop3 { get; set; }
public override string ToString() => $"{Prop1} {Prop2} {Prop3}";