2010-08-08 84 views
2

我只是在修補F#和Azure,並且已經脫離了TableServiceContext。 我正在將this post轉換爲F#實現,這個實現進行得很順利,直到它到達實際查詢數據的地步。 在C#代碼F#和Azure TableServiceContext

public IEnumerable<ContactDataModel> Select() 
{ 
    var results = from c in _ServiceContext.ContactTable 
        select c; 

    var query = results.AsTableServiceQuery<ContactDataModel>(); 
    var queryResults = query.Execute(); 

    return queryResults; 
} 

,其中結果是一個IQueryable和AsTableServiceQuery看起來像它的擴展方法。

有誰知道如何使用TableServiceContext對Azure存儲執行這些類型的查詢嗎?

我還以爲像

seq { for c in _ServiceContext.ContactTable do yield c } 

甚至與動力單元

query <@ seq { for c in _ServiceContext.ContactTable do yield c } @> 

將是一個很好的起點,但我不知道在哪裏何去何從。我想最糟糕的情況是把它作爲C#代碼,然後從F#調用它,但想知道任何替代方案。

乾杯 迪倫

回答

2

使用query <@ seq { ... } @>並將結果轉換爲IQueryable(這是PowerPack中查詢支持的不幸的限制)。其餘部分應該是相同的C#:

let results = 
    query <@ seq { for c in _ServiceContext.ContactTable do yield c } @> 
    :?> IQueryable<DataContactModel> 
let query = results.AsTableServiceQuery() 
query.Execute() 

(我還沒有嘗試過)

+1

工作一個魅力的感謝狀。對於稍後查看此內容的任何人,您需要添加語句,打開System.Linq以獲取IQueryable <>類型 – Dylan 2010-08-08 20:36:19