Как выполнить запрос с помощью partitionkey в хранилище таблиц Azure?
-
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));
}
Не связан с StackOverflow