2010-02-09 4 views
2

J'ai la classe TableServiceContext suivante pour les livres, je veux interroger la table Livres du PartitionKey, s'il vous plaît ignorer le fait que j'utilise la clé de partition comme le nom du livre, c'est juste pour mes sakés d'apprentissageComment faire une requête par partitionkey dans Azure Table Storage?

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

      } 
} 

J'ai un "Impossible de convertir implicitement le type 'System.Linq.IQueryable' en 'System.Data.Services.Client.DataServiceQuery' Une conversion explicite existe (manque-t-il un cast?)" Sur cette dernière ligne.

Toute aide sera appréciée!

Répondre

1

qResult est déjà affecté un type par le compilateur. Vous essayez de le réaffecter à un type différent, mais cela n'est pas autorisé.

Essayez cette

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

Edit: Il semble que votre propriété livresque est le mauvais type.

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

Même erreur même avec l'utilisation d'une nouvelle variable –

Questions connexes