Как эффективно создать «бесконечную» строку?
Суть задачи в том, чтобы вычислить индекс, не создавая строку numbers. Быстро и не пожирая память.
Конечно аналитически найти индекс это true path, но сделать "в лоб" тоже можно. Для str = "123456798" ответ получишь через 3 минуты :)using System;
using System.Collections.Generic;
using System.Linq;

namespace FindString
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "123456798";
            string buf = string.Concat(Generator.All().Take(str.Length));

            ulong index = 0;
            foreach (var c in Generator.All().Skip(str.Length))
            {
                if (buf == str)
                {
                    break;
                }

                buf = buf.Substring(1) + c;
                ++index;
            }

            Console.WriteLine("index is {0}", index);
            Console.ReadKey();
        }
    }

    public class Generator
    {
        public static IEnumerable<char> All()
        {
            ulong v = 0;
            while(true)
            {
                ++v;
                foreach(var c in v.ToString().ToCharArray())
                {
                    yield return c;
                }
            }
        }
    }
}