Преобразование Enumerable.Диапазон в список строк

#c# #linq

#c# #linq

Вопрос:

В Linq, как преобразовать Enumerable.Диапазон (1, 31) в список строк?

Ответ №1:

 var list = Enumerable.Range(1, 31).Select(n => n.ToString()).ToList();
  

Комментарии:

1. Насколько метод Cast<string>() отличается (с точки зрения эффективности)? var list = Enumerable . Диапазон(1, 31).Приведение<string>().ToList();

Ответ №2:

     static void Main(string[] args)
    {
        List<string> test;
        test = Enumerable.Range(1, 31).Select(n => n.ToString()).ToList();
        foreach (var item in test)
        {
            Console.WriteLine(item);
        }
        Console.ReadLine();
    }
  

Этот печатает 31 строку для меня :).

введите описание изображения здесь

Комментарии:

1. Поскольку n не наследуется от IEnumerable , тест реализуется путем отложенного выполнения. Значение, возвращаемое getRange , является информацией, необходимой для выполнения действия. Запрос не выполняется до тех пор, пока объект не будет перечислен путем вызова его метода GetEnumerator или с помощью foreach .

2. @JimLahman, хотя вы правы, в приведенном коде запрос выполняется в .ToList() методе, который предшествует foreach . Во время foreach выполнения список уже содержит все строковые значения.

Ответ №3:

Попробуйте это:

  string list = string.Join(string.Empty, Enumerable.Range(1, 31));
  

Извините, я преобразовал только в строку.

 var list = string.Join(",", Enumerable.Range(1, 31)).Split(',').ToList();
  

Комментарии:

1. Объединение и последующее разделение кажутся мне довольно неэффективными. Почему бы просто не использовать a Select ?