Как выполнить запрос по ключу раздела в хранилище таблиц Azure? - PullRequest
2 голосов
/ 09 февраля 2010

У меня есть следующий класс TableServiceContext для книг, я хочу запросить таблицу Книги по ключу 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 ». Существует явное преобразование (вы пропустили приведение?)» В последней строке. * * 1004

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

1 Ответ

1 голос
/ 09 февраля 2010

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

Попробуйте это

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

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

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));
}
...