using System.Collections.Generic;
public int user_id { get; set; }
public int sample_id { get; set; }
public int machine_id { get; set; }
public static void Main()
List<Result> results = new()
new() { user_id = 2, sample_id = 1, machine_id = 4 },
new() { user_id = 2, sample_id = 1, machine_id = 2026 },
new() { user_id = 2, sample_id = 1, machine_id = 2030 },
new() { user_id = 2, sample_id = 1, machine_id = 2046 },
new() { user_id = 2, sample_id = 1, machine_id = 2053 },
new() { user_id = 2, sample_id = 1, machine_id = 2058 },
new() { user_id = 2, sample_id = 1, machine_id = 2061 },
new() { user_id = 1, sample_id = 1, machine_id = 4 },
new() { user_id = 1, sample_id = 1, machine_id = 2026 },
new() { user_id = 1, sample_id = 1, machine_id = 2030 },
new() { user_id = 1, sample_id = 1, machine_id = 2046 },
new() { user_id = 1, sample_id = 1, machine_id = 2053 },
new() { user_id = 1, sample_id = 1, machine_id = 2058 },
new() { user_id = 1, sample_id = 1, machine_id = 2061 },
new() { user_id = 1, sample_id = 1, machine_id = 2080 },
new() { user_id = 1, sample_id = 1, machine_id = 2081 },
new() { user_id = 1, sample_id = 1, machine_id = 2083 },
new() { user_id = 1, sample_id = 1, machine_id = 2084 }
var filteredEarly = results
.Where(r => r.user_id == selectedUserId)
.GroupBy(r => new { r.machine_id, r.sample_id })
var filteredLate = results
.GroupBy(r => new { r.machine_id, r.sample_id })
.Where(r => r.user_id == selectedUserId);
Console.WriteLine("user_id sample_id machine_id");
Console.WriteLine("--------------------------------");
Console.WriteLine("\nApplying filtering early:\n");
Console.WriteLine("\nApplying filtering late:\n");
private static void Print(IEnumerable<Result> results)
foreach (var item in results)
Console.WriteLine($"{item.user_id.ToString().PadRight(10)}{item.sample_id.ToString().PadRight(12)}{item.machine_id}");