2010-02-09 109 views
2

我有以下用于书籍的TableServiceContext类,我想通过partitionKey查询表Books,请忽略我使用分区键作为书名的事实,这仅仅是为了我的学习而得到的如何通过Azure表存储中的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'。在最后一行显示转换存在(你是否缺少一个转换?)”。

任何帮助将不胜感激!

回答

1

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)); 
} 
+0

即使使用新变量也会出现同样的错误 – 2010-02-09 19:12:13

相关问题