Instead of looping through each character to see if it\'s the one you want then adding the index your on to a list like so:
var foundIndexes = new List&
The raw iteration is always better & most optimized.
Unless it's a bit complex task, you never really need to seek for a better optimized solution...
So I would suggest to continue with :
var foundIndexes = new List(); for (int i = 0; i < myStr.Length; i++) if (myStr[i] == 'a') foundIndexes.Add(i);