Azure Table Storage에서 파티션 키로 쿼리하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
나는 다음과 같은 TableserViceContext 클래스를 가지고 있습니다. 파티션 키에 의해 테이블 북을 쿼리하고 싶습니다. 파티션 키를 책 이름으로 사용하고 있다는 사실을 무시하십시오. 이것은 내 학습을위한 것입니다.
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