Как повторить целое IEnumerable
несколько раз?C# повторение IEnumerable несколько раз
Подобно Python:
> print ['x', 'y'] * 3
['x', 'y', 'x', 'y', 'x', 'y']
Как повторить целое IEnumerable
несколько раз?C# повторение IEnumerable несколько раз
Подобно Python:
> print ['x', 'y'] * 3
['x', 'y', 'x', 'y', 'x', 'y']
Вы можете использовать простой LINQ, чтобы сделать это:
var repeated = Enumerable.Repeat(original, 3)
.SelectMany(x => x);
Или вы могли бы просто написать метод расширения:
public static IEnumerable<T> Repeat<T>(this IEnumerable<T> source,
int count)
{
for (int i = 0; i < count; i++)
{
foreach (var item in source)
{
yield return count;
}
}
}
Обратите внимание, что в в обоих случаях последовательность была бы переоценена на каждом «повторе», чтобы она могла дать разные результаты, даже разной длины ... Действительно, некоторые последовательности не могут быть оценены более одного раза. Вы должны быть осторожны, что вы делаете это с, в основном:
ToList()
первым и вызвать Repeat
на этомRepeat
как выше
Какой результат вы используете? –
@ conanak99 Я добавил выход Python, теперь это должно быть хорошо. – m0nhawk
Возможно, стоит добавить, что если бы это были ссылочные типы (в python), то это была бы копия ссылки и вместо значения – Sayse