using System.Collections.Generic; namespace MediaBrowser.Common.Extensions { // The MS CollectionExtensions are only available in netcoreapp public static class CollectionExtensions { public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key) { dictionary.TryGetValue(key, out var ret); return ret; } /// /// Copies all the elements of the current collection to the specified list /// starting at the specified destination array index. The index is specified as a 32-bit integer. /// /// The current collection that is the source of the elements. /// The list that is the destination of the elements copied from the current collection. /// A 32-bit integer that represents the index in destination at which copying begins. /// public static void CopyTo(this IReadOnlyList source, IList destination, int index = 0) { for (int i = 0; i < source.Count; i++) { destination[index + i] = source[i]; } } /// /// Copies all the elements of the current collection to the specified list /// starting at the specified destination array index. The index is specified as a 32-bit integer. /// /// The current collection that is the source of the elements. /// The list that is the destination of the elements copied from the current collection. /// A 32-bit integer that represents the index in destination at which copying begins. /// public static void CopyTo(this IReadOnlyCollection source, IList destination, int index = 0) { foreach (T item in source) { destination[index++] = item; } } } }