2010-08-08 13 views
2

Je ne fais que bricoler avec F # et Azure et je suis tombé sur le TableServiceContext. Je convertissais this post dans une implémentation F # qui allait bien jusqu'à ce que vous arriviez à l'interrogation des données. En C# le code estF # et 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; 
} 

où les résultats est un IQueryable et AsTableServiceQuery semble que ce soit une méthode d'extension.

Est-ce que quelqu'un sait comment effectuer ce type de requêtes sur le stockage Azure à l'aide de TableServiceContext?

je l'aurais pensé quelque chose comme

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

ou même avec le Powerpack

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

serait un bon point de départ, mais je n'ai aucune idée où aller d'ici. Je suppose que le pire des cas est de laisser ce code C# et de l'appeler de F #, mais j'aimerais avoir des alternatives.

Vive Dylan

Répondre

2

Utilisez query <@ seq { ... } @> et transtypez le résultat en IQueryable (il s'agit malheureusement d'une limitation de la prise en charge des requêtes dans PowerPack). Le reste devrait être le même que C#:

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

(je ne l'ai pas essayé)

+1

a fonctionné comme un charme grâce. Pour quelqu'un d'autre regardant cela plus tard, vous devez ajouter l'instruction ouvrir System.Linq pour obtenir le type IQueryable <> – Dylan