private IDictionary <object, ResourceResolverEntry> ResolveResourcesByField(IReadOnlyCollection <object> resourceIdentities) { var result = new Dictionary <object, ResourceResolverEntry>( ); // Resolve entity (use Name for now) ILookup <object, long> lookup = _entityResolver.GetEntitiesByField(resourceIdentities); // Look up IDs for the identitifiers Dictionary <long, object> entityIDs = new Dictionary <long, object>( ); foreach (object resourceIdentity in resourceIdentities) { if (!lookup.Contains(resourceIdentity)) { result[resourceIdentity] = new ResourceResolverEntry(ResourceResolverError.ResourceNotFoundByField); continue; } // Check entity count long [] entityIds = lookup [resourceIdentity].Take(2).ToArray( ); if (entityIds.Length != 1) { result [resourceIdentity] = new ResourceResolverEntry(ResourceResolverError.ResourceNotUniqueByField); continue; } entityIDs.Add(entityIds [0], resourceIdentity); } // Load entities for the IDs. IEnumerable <IEntity> entities = Entity.Get(entityIDs.Keys); foreach (IEntity entity in entities) { object resourceIdentity = entityIDs [entity.Id]; result [resourceIdentity] = new ResourceResolverEntry(entity); } return(result); }