Как выполнить запрос с помощью partitionkey в хранилище таблиц Azure?

StackOverflow https://stackoverflow.com/questions/2231664

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть следующий класс TableServiceContext для books, я хочу запросить таблицу Books с помощью PartitionKey, пожалуйста, игнорируйте тот факт, что Я использую ключ раздела в качестве названия книги, это просто для моего удобства обучения

   public class BookDataServiceContext: TableServiceContext
        {

            public BookDataServiceContext(string baseAddress, StorageCredentials credentials)
                : base(baseAddress, credentials)
            {
            }

            public IQueryable<Book> Books
            {
                get
                {
                    return this.CreateQuery<Book>("Books");
                }
            }

            public void AddMessage(string name, int value)
            {
                this.AddObject("Books", new Book {PartitionKey=name, BookName = name, BookValue = value});
                this.SaveChanges();
            }

            public Book GetBookByPartitionKey(Guid partitionKey)
            {
                var qResult = this.CreateQuery<Book>("Books");
    This doesnt work ---->           // qResult = qResult.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));

            } 
}

Я получаю сообщение "Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Data.Services.Client.DataServiceQuery".Существует явное преобразование (вам не хватает приведения?)" в этой последней строке.

Любая помощь будет оценена по достоинству!

Это было полезно?

Решение

qResult компилятором уже присвоен тип.Вы пытаетесь переназначить его на другой тип, но это запрещено.

Попробуй это

var someOtherName = qResult.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));

Редактировать: Похоже, что ваше свойство Books имеет неправильный тип.

public DataServiceQuery<Book> Books
{
    get
    {
        return this.CreateQuery<Book>("Books");
    }
}

public Book GetBookByPartitionKey(string partitionKey)
{
    var qResult = Books.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top