#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
?