如何在条件中使用Azure表中检索到的行的属性?

时间:2018-04-06 16:44:16

标签: azure azure-functions azure-table-storage

我有一个我正在填充/更新的azure表,我想只创建一个行,如果它不存在,或者如果它缺少一个属性则更新该行。我在下面有行检查功能,但我不知道如何检查该行的属性是否为空。

纬度和经度是行属性,城市和州也是如此。

        public static async Task<bool> rowExists(CloudTable table, string city, string state)
    {
        TableOperation tOP = TableOperation.Retrieve(state, city);
        var result = await table.ExecuteAsync(tOP).ConfigureAwait(false);
        if (result.Result == null)
        {
            return false;
        }
/*          else if(row latitude or longitude == null)
        {
            return false;
        } 
*/
        else
            return true;
    }

修改

为了使问题更清楚,我的最终目标是在不存在的情况下插入一行。这部分工作正常。如果该行存在,但缺少纬度或经度(例如由于API达到了查询限制),我想更新该行以获取缺少的属性。

1 个答案:

答案 0 :(得分:1)

基本上解决此问题的一种方法是将结果转换为DynamicTableEntity对象,并检查其中是否存在特定属性。例如,您可以使用以下代码:

    public static async Task<bool> RowExists(CloudTable table, string city, string state)
    {
        TableOperation tOP = TableOperation.Retrieve(state, city);
        var result = await table.ExecuteAsync(tOP).ConfigureAwait(false);
        var entity = result.Result as DynamicTableEntity;
        if (entity == null) return false;//Entity does not exists.
        if (!entity.Properties.ContainsKey("Latitude") || !entity.Properties.ContainsKey("Longitude")) return false;//Either of these attributes do not exist in the entity.
        return true;//All's well. Let's move on to the next record :)
    }