LINQ Allocations Add Up
Every LINQ chain allocates enumerator objects on the heap. In a hot path called thousands of times per second this matters. Use BenchmarkDotNet to measure before assuming LINQ is the bottleneck, but know that for loops over arrays are often 5-10x faster.