【问题标题】:How do I select record from Azure table storage如何从 Azure 表存储中选择记录
【发布时间】:2019-11-16 02:31:21
【问题描述】:

我想对 Azure 表存储执行查询语句。 在我写的代码下面:

    public List<T> RetrieveEntity<T>(string Query = null) where T : TableEntity, new()
    {
        try
        {
            // Create the Table Query Object for Azure Table Storage  
            TableQuery<T> DataTableQuery = new TableQuery<T>();
            if (!String.IsNullOrEmpty(Query))
            {
                DataTableQuery = new TableQuery<T>().Where(Query);
            }
           IEnumerable<T> IDataList = table.ExecuteQuery(DataTableQuery); 
            List<T> DataList = new List<T>();
            foreach (var singleData in IDataList)
                DataList.Add(singleData);
            return DataList;
        }
        catch (Exception ExceptionObj)
        {
            throw ExceptionObj;
        }
    }

我如何输入下一行?

IEnumerable IDataList = table.ExecuteQuery(DataTableQuery);

为了让一切正常工作?

谢谢, 西蒙娜

【问题讨论】:

    标签: c# azure-table-storage


    【解决方案1】:

    这是一种方法。

    第 1 步。获取查询。这是来自Writing LINQ queries against the Table service 的示例

    var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)  
                     where entity.PartitionKey == "MyPartitionKey"  
                     select new { entity.RowKey };  
    

    var partitionQuery = TableQuery.GenerateFilterCondition
                         ("PartitionKey", QueryComparisons.Equal, myKey);
    

    var startQ = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, start);
    var endQ= TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, end);
    var q = TableQuery.CombineFilters(startQ, TableOperators.And, endQ);
    

    第 2 步。获取数据

    public async Task<List<T>> GetDataAsync<T>(TableQuery<T> query)
    {
        var l = new List<T>();
        TableContinuationToken continuationToken = null;
        do
        {
            var queryResponse = await table.ExecuteQuerySegmentedAsync(query, continuationToken);
            continuationToken = queryResponse.ContinuationToken;
            l.AddRange(queryResponse.Results);
        } 
        while (continuationToken != null);
        return l;
    }
    

    【讨论】:

    • 在我上面显示的方法中,我替换了 IEnumerable IDataList = table.ExecuteQuery(DataTableQuery); IEnumerable IDataList = table.ExecuteQuerySegmentedAsync(DataTableQuery, null).Result as IEnumerable 。对吗?
    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2021-12-21
    相关资源
    最近更新 更多