2010-02-09 2 views
2

나는 책에 대해 다음과 같은 TableServiceContext 클래스를 가지고 있는데, 나는 partitionKey에 의해 Books Books라는 테이블을 쿼리하려고합니다. 사실을 무시하십시오. 책 이름으로 파티션 키를 사용하고 있습니다. 이것은 내 학습을위한 것입니다.Azure 테이블 저장소에서 파티션 키를 사용하여 쿼리하는 방법은 무엇입니까?

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

새 변수를 사용하는 경우에도 같은 오류가 발생합니다. –

관련 문제