F#和Azure TableServiceContext

时间:2010-08-08 07:40:53

标签: f# azure

我只是在修补F#和Azure,并且已经解决了TableServiceContext问题。 我正在将this post转换为F#实现,该实现一直很顺利,直到它实际查询数据为止。 在C#中,代码是

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

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

    return queryResults;
}

其中result是IQueryable,AsTableServiceQuery看起来像是一个扩展方法。

有没有人知道如何使用TableServiceContext对Azure存储执行这些类型的查询?

我想过像

这样的东西
seq { for c in _ServiceContext.ContactTable do yield c }

或甚至使用powerpack

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

将是一个很好的起点,但我不知道从哪里开始。我想最糟糕的情况是将其作为C#代码保留,然后从F#调用它,但想了解任何替代方案。

干杯 迪伦

2 个答案:

答案 0 :(得分: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 :(得分:0)

基于

http://blogs.msdn.com/b/dsyme/archive/2009/10/23/a-quick-refresh-on-query-support-in-the-f-power-pack.aspx

我认为你走在正确的轨道上。您可能必须“明确地”调用扩展方法(例如,将接收器作为参数作为静态方法),但我认为它会起作用 - 您尝试过吗?