public async Task <IEnumerable <ApiResource> > FindApiResourcesByScopeAsync(IEnumerable <string> scopeNames) { var list = $"|{string.Join("|", scopeNames)}|"; var dataTable = await _dataFetcher.FetchAsync("FindApiResourcesByScope", new SqlParameter("@Scopes", list)); var resources = new List <ApiResource>(); foreach (DataRow row in dataTable.Rows) { var resourceName = row["ResourceName"].ToString(); var resource = resources.SingleOrDefault(r => r.Name == resourceName); if (resource == null) { resource = new ApiResource { Name = resourceName, DisplayName = row["ResourceDisplayName"].ToString() }; resources.Add(resource); } resource.Scopes.Add(new Scope { Name = row["ScopeName"].ToString(), DisplayName = row["ScopeDisplayName"].ToString(), Description = row["ScopeDescription"].ToString(), Required = (bool)row["ScopeRequired"], Emphasize = (bool)row["ScopeEmphasize"], ShowInDiscoveryDocument = (bool)row["ScopeShowInDiscoveryDocument"] }); } return(resources); }