1
propertiers列表使用Azure的DocumentDb和.NET API,我有以下的方法,用於檢索整個文檔的列表的偉大工程:查詢DocumentDB的使用LINQ的選擇
public async Task<IEnumerable<T>> GetItemsAsync<T>(Expression<Func<T, bool>> predicate)
{
IDocumentQuery<T> query = _Client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(_DatabaseId, _Collection),
new FeedOptions { MaxItemCount = -1 })
.Where(predicate)
.AsDocumentQuery();
List<T> results = new List<T>();
while (query.HasMoreResults)
{
var item = await query.ExecuteNextAsync<T>();
results.AddRange(item);
}
return results;
}
現在,我不知道總是希望回到整個文檔(尤其是考慮到DocumentDb RU定價模型),所以我想我應該能夠添加。選擇投影像這樣:
public async Task<List<TResult>> GetItemsAsync<T, TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TResult>> select)
{
IDocumentQuery<TResult> query = _Client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(_DatabaseId, _Collection),
new FeedOptions { MaxItemCount = -1 })
.Where(predicate)
.Select(select)
.AsDocumentQuery();
List<TResult> results = new List<TResult>();
while (query.HasMoreResults)
{
var item = await query.ExecuteNextAsync<TResult>();
results.AddRange(item);
}
return results;
}
用法:
var rez = await _docs.GetItemsAsync<ApolloAssetDoc, Guid?>(x => x.MyVal == 5, x => x.ID);
但第二種方法總是返回0結果。很明顯,我正在吠叫錯誤的樹。
任何想法什麼正確的方式來返回一個選擇多個屬性的查詢(例如"SELECT d.id, d.MyVal FROM Items d WHERE d.DocType=0"
)的動態對象的列表或只有一個屬性被選中的簡單列表(例如"SELECT d.id FROM Items d WHERE d.DocType=0"
)?
有趣!我確實定義了該屬性,但是我在「ICosmosDocument」文檔界面中定義了它。我沒有意識到JsonProperty映射屬性不能應用在界面中!可能適用於任何屬性?感謝您的協助! –