如何通过partitionkey在Azure Table中存储查询?
-
19-09-2019 - |
题
我对书籍以下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’。一个显式转换存在(是否缺少强制转换?)”的最后一行。
任何帮助将理解!
解决方案
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));
}
不隶属于 StackOverflow