public static T[] MyToArray <T>(this IEnumerable <T> enumerable) { var builder = new LargeArrayBuilder <T>(true); builder.AddRange(enumerable); return(builder.ToArray()); }
public TResult[] ToArray() { var builder = new LargeArrayBuilder <TResult>(initialize: true); foreach (TSource element in _source) { builder.AddRange(_selector(element)); } return(builder.ToArray()); }
public void AddRange(IEnumerable <T> seed) { var builder = new LargeArrayBuilder <T>(initialize: true); // Call AddRange multiple times and verify contents w/ each iteration. for (int i = 1; i <= 10; i++) { builder.AddRange(seed); IEnumerable <T> expected = Enumerable.Repeat(seed, i).SelectMany(s => s); Assert.Equal(expected, builder.ToArray()); } }
public virtual TSource[] ToArray() { var builder = new LargeArrayBuilder <TSource>(initialize: true); for (int i = 0; ; i++) { IEnumerable <TSource> source = GetEnumerable(i); if (source == null) { break; } builder.AddRange(source); } return(builder.ToArray()); }
public void CopyTo(IEnumerable <T> seed, int index, int count) { var array = new T[seed.Count()]; var builder = new LargeArrayBuilder <T>(initialize: true); builder.AddRange(seed); builder.CopyTo(array, index, count); // Ensure we don't copy out of bounds by verifying contents outside the copy area, too. IEnumerable <T> prefix = array.Take(index); IEnumerable <T> suffix = array.Skip(index + count); IEnumerable <T> actual = array.Skip(index).Take(count); Assert.Equal(Enumerable.Repeat(default(T), index), prefix); Assert.Equal(Enumerable.Repeat(default(T), array.Length - index - count), suffix); Assert.Equal(seed.Take(count), actual); }
private TSource[] LazyToArray() { Debug.Assert(GetCount(onlyIfCheap: true) == -1); var builder = new LargeArrayBuilder <TSource>(initialize: true); if (!_appending) { builder.SlowAdd(_item); } builder.AddRange(_source); if (_appending) { builder.SlowAdd(_item); } return(builder.ToArray()); }
private TSource[] LazyToArray() { Debug.Assert(GetCount(onlyIfCheap: true) == -1); var builder = new LargeArrayBuilder <TSource>(initialize: true); for (SingleLinkedNode <TSource> node = _prepended; node != null; node = node.Linked) { builder.Add(node.Item); } builder.AddRange(_source); if (_appended != null) { foreach (TSource item in _appended.ToArray()) { builder.Add(item); } } return(builder.ToArray()); }