我如何从Azure表存储中选择记录

问题描述 投票:0回答:1

我想在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个回答
0
投票

这里是一种方法。

步骤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;
}
© www.soinside.com 2019 - 2024. All rights reserved.