/// <summary>
        /// Filters a collection of entities from a filter definition
        /// </summary>
        /// <param name="prefix">Filter objects by prefix</param>
        /// <returns>Filtered collection of entities</returns>
        public async Task <IEnumerable <Interfaces.BlobInfo> > FindAsync(string prefix)
        {
            BlobContinuationToken continuationToken = null;
            BlobResultSegment     resultSegment     = null;
            var blobs = new List <Interfaces.BlobInfo>();

            do
            {
                resultSegment = await container.ListBlobsSegmentedAsync(prefix, true, BlobListingDetails.Metadata, null, continuationToken, null, null);

                if (resultSegment != null && resultSegment.Results != null)
                {
                    foreach (var cloudBlob in resultSegment.Results)
                    {
                        var block = cloudBlob as CloudBlockBlob;
                        if (block != null)
                        {
                            var blob = new Interfaces.BlobInfo();
                            blob.Id   = block.Name;
                            blob.Size = block.Properties.Length;
                            blob.Uri  = block.Uri;
                            blobs.Add(blob);
                        }
                    }

                    continuationToken = resultSegment.ContinuationToken;
                }
                else
                {
                    continuationToken = null;
                }
            }while (continuationToken != null);

            return(blobs);
        }
        /// <summary>
        /// Gets an entity by id.
        /// </summary>
        /// <param name="id">Filter to find a single item</param>
        /// <returns>Entity</returns>
        public async Task <Interfaces.BlobInfo> GetByIdAsync(object id)
        {
            try
            {
                CloudBlockBlob block = container.GetBlockBlobReference(id.ToString());
                await block.FetchAttributesAsync();

                var blob = new Interfaces.BlobInfo();
                blob.Id   = block.Name;
                blob.Size = block.Properties.Length;
                blob.Uri  = block.Uri;
                return(blob);
            }
            catch
            {
                return(null);
            }
        }