I have an array
string[] AddrArray = new string[] { truncString };
which contains only one value <Addr>{Addr : n}</Addr>
how can I duplicate this value n
number of times inside the same array
.
Thanks in advance
I have an array
string[] AddrArray = new string[] { truncString };
which contains only one value <Addr>{Addr : n}</Addr>
how can I duplicate this value n
number of times inside the same array
.
Thanks in advance
Use Enumerable.Repeat
in your array initialization may simplify your task:
string[] repeatedStrArray = Enumerable.Repeat(truncString, N).ToArray(); //specify N with the number of times you want
One way is to use Enumerable.Repeat
to get n-arrays and SelectMany
to flatten them to 1 array with n elements. This works even if the array contains more than one element:
AddrArra = Enumerable.Repeat(AddrArra, n).SelectMany(arr => arr).ToArray();
But i would prefer a custom extension method which is readable and more efficient:
public static IEnumerable<T> DuplicateItems<T>(this IEnumerable<T> items, int factor)
{
if (items == null) throw new ArgumentNullException("items");
if (factor <= 0) throw new ArgumentException("factor must be >= 1", "factor");
if (factor == 1) return items;
List<T> list = new List<T>();
using (var enumerator = items.GetEnumerator())
{
for (int i = 0; i < factor; i++)
{
while (enumerator.MoveNext())
list.Add(enumerator.Current);
enumerator.Reset();
}
}
return list;
}
Simple to use:
int n = 10;
AddrArra = AddrArra.DuplicateItems(n).ToArray();
int repeateCount=5;
string input = "<Addr>{Addr : n}</Addr> ";
string[] AddrArray =Enumerable.Repeat(input, repeateCount).ToArray() ;