Dev2.Data.Operations.Dev2IndexFinder.RightToLeftIndexSearch C# (CSharp) Method

RightToLeftIndexSearch() private method

private RightToLeftIndexSearch ( enIndexFinderOccurrence occurrence, int firstIndex, int lastIndex, string stringToSearchIn, string charsToSearchFor, System.StringComparison comparisonType ) : IEnumerable
occurrence enIndexFinderOccurrence
firstIndex int
lastIndex int
stringToSearchIn string
charsToSearchFor string
comparisonType System.StringComparison
return IEnumerable
        private IEnumerable<int> RightToLeftIndexSearch(enIndexFinderOccurrence occurrence, int firstIndex, int lastIndex, string stringToSearchIn, string charsToSearchFor, StringComparison comparisonType)
        {
            int index = -1;
            IEnumerable<int> result;
            switch(occurrence)
            {
                case enIndexFinderOccurrence.FirstOccurrence:
                    if(lastIndex != -1)
                    {
                        index = stringToSearchIn.Length - lastIndex - (charsToSearchFor.Length - 1);
                    }
                    result = new[] { index };
                    break;

                case enIndexFinderOccurrence.LastOccurrence:
                    if(firstIndex != -1)
                    {
                        index = stringToSearchIn.Length - firstIndex - (charsToSearchFor.Length - 1);
                    }
                    result = new[] { index };
                    break;

                case enIndexFinderOccurrence.AllOccurrences:
                    List<int> foundIndexes = new List<int>();
                    stringToSearchIn = stringToSearchIn.ReverseString();
                    int currentIndex = firstIndex;
                    while(currentIndex != -1 && currentIndex != stringToSearchIn.Length)
                    {
                        currentIndex = stringToSearchIn.IndexOf(charsToSearchFor, currentIndex, comparisonType);
                        if(currentIndex != -1)
                        {
                            currentIndex++;
                            foundIndexes.Add(currentIndex);
                        }
                    }
                    result = foundIndexes.ToArray();
                    break;

                default:
                    throw new Exception("Error In Dev2IndexFinder");

            }
            return result;
        }