CloudStorageAccount,发出TableQuery请求

问题描述

我正在尝试查询CloudTable。在获取特定表的所有元素之前,我所做的只是要花很多时间。

public static List<CollectItem> GetCollectItems(string connectionString,string tableName,DateTime dateTime)
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

        // Create the table client.
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

        // Create the CloudTable object that represents the "people" table.
        CloudTable table = tableClient.GetTableReference(tableName);

        TableContinuationToken token = null;
        List<CollectItem> entities = new List<CollectItem>();

        do
        {
            var queryResult = table.ExecuteQuerySegmented(new TableQuery<CollectItem>(),token);
            entities.AddRange(queryResult.Results);
            token = queryResult.ContinuationToken;
        } while (token != null);

        entities = entities.Where(x => x.Timestamp.DateTime.Year == dateTime.Year &&
                                       x.Timestamp.DateTime.Month == dateTime.Month &&
                                       x.Timestamp.DateTime.Day == dateTime.Day).ToList();

        return entities;
    }

然后我尝试创建一些查询条件

do
        {
            TableQuery<CollectItem> itemStockQuery = new TableQuery<CollectItem>().Where(
                                                                        TableQuery.GenerateFilterConditionForInt("Timestamp",QueryComparisons.Equal,dateTime)
                                                                        );

            var queryResult = table.ExecuteQuerySegmented(itemStockQuery,token);
            entities.AddRange(queryResult.Results);
            token = queryResult.ContinuationToken;
        } while (token != null);

但是现在它只执行年,月,日,时,分...。而我只需要执行年,月和日。 然后我尝试创建此文件,但它表示请求不正确。

TableQuery<CollectItem> itemStockQuery = new TableQuery<CollectItem>().Where(
                                                                        TableQuery.GenerateFilterConditionForInt("Timestamp.DateTime.Day",dateTime.Day)
                                                                        );

我的问题是我如何才能在时间戳上创建查询请求,但只能使用年,月和日属性

解决方法

您必须创建一列并为其创建索引。您的currdate datetime-column未建立索引,因此不应该建立索引,这就是查询时间较长的原因。

您可以创建不带时间信息的日期列,并在该列上建立索引,也可以指定自己的格式,例如。 20200928作为您日期的int列。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...