我只是在修补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#调用它,但想了解任何替代方案。
干杯 迪伦
答案 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)
基于
我认为你走在正确的轨道上。您可能必须“明确地”调用扩展方法(例如,将接收器作为参数作为静态方法),但我认为它会起作用 - 您尝试过吗?