using Microsoft.Extensions.DependencyModel; using System.Linq; namespace System.Collections.Generic { public static class CollectionExtensions { public static RuntimeAssetGroup GetDefaultGroup(this IEnumerable self) => GetGroup(self, string.Empty); public static RuntimeAssetGroup GetRuntimeGroup(this IEnumerable self, string runtime) { if(string.IsNullOrEmpty(runtime)) { throw new ArgumentNullException(nameof(runtime)); } return GetGroup(self, runtime); } private static RuntimeAssetGroup GetGroup(IEnumerable groups, string runtime) { return groups.FirstOrDefault(g => g.Runtime == runtime); } public static IEnumerable GetDefaultAssets(this IEnumerable self) => GetAssets(self, string.Empty); public static IEnumerable GetRuntimeAssets(this IEnumerable self, string runtime) { if(string.IsNullOrEmpty(runtime)) { throw new ArgumentNullException(nameof(runtime)); } return GetAssets(self, runtime); } private static IEnumerable GetAssets(IEnumerable groups, string runtime) { return groups .Where(a => string.Equals(a.Runtime, runtime, StringComparison.Ordinal)) .SelectMany(a => a.AssetPaths); } } }