示例#1
0
        private IQueryable <Microsoft.WindowsAzure.DevelopmentStorage.Store.BlobContainer> MakeListBlobContainersQuery(string containerNamePrefix, string separator, string containerNameStart, IContainerCondition condition, int maxContainerNames, DevelopmentStorageDbDataContext dataContext)
        {
            IQueryable <Microsoft.WindowsAzure.DevelopmentStorage.Store.BlobContainer> blobContainers =
                from c in dataContext.BlobContainers
                where c.AccountName == this._account.Name
                select c;

            if (!string.IsNullOrEmpty(separator))
            {
                blobContainers =
                    from c in dataContext.GetSummaryBlobContainers(this._account.Name, containerNamePrefix, separator)
                    select c;
            }
            else if (!string.IsNullOrEmpty(containerNamePrefix))
            {
                blobContainers =
                    from c in blobContainers
                    where c.ContainerName.StartsWith(DbStorageAccount.FixTildeInPrefix(containerNamePrefix))
                    select c;
            }
            if (!string.IsNullOrEmpty(containerNameStart))
            {
                blobContainers =
                    from c in blobContainers
                    where c.ContainerName.CompareTo(containerNameStart) >= 0
                    select c;
            }
            if (condition != null)
            {
                if (condition.IfModifiedSinceTime.HasValue)
                {
                    blobContainers =
                        from c in blobContainers
                        where c.LastModificationTime > condition.IfModifiedSinceTime.Value
                        select c;
                }
                if (condition.IfNotModifiedSinceTime.HasValue)
                {
                    blobContainers =
                        from c in blobContainers
                        where c.LastModificationTime <= condition.IfNotModifiedSinceTime.Value
                        select c;
                }
            }
            if (maxContainerNames != 0)
            {
                blobContainers = blobContainers.Take <Microsoft.WindowsAzure.DevelopmentStorage.Store.BlobContainer>(maxContainerNames + 1);
            }
            return(blobContainers);
        }