Why it matters
Task.WhenAll starts every task before awaiting any of them, so the projection's lambda runs concurrently on one shared instance. DbContext detects it and throws *"A second operation was started on this context before a previous operation completed"*; the ADO.NET types are less forgiving and can corrupt connection state instead. The code reads like a clean parallel speed-up, which is exactly why it survives review.