Start here. This is the direct spoken answer to practice first.
Why this question matters
These operators answer different shape questions, so describing the intended result type first prevents many confusing LINQ expressions.
Select maps each input item to one output value. SelectMany maps each input to a sequence and flattens those sequences into one stream. GroupBy partitions items by a key and produces a sequence of groups, where each group contains its key and matching elements. I choose by asking whether the result should remain one-for-one, become one flat sequence, or become keyed groups.