【问题标题】:How to apply query operation only to first entity in Azure table?如何仅将查询操作应用于 Azure 表中的第一个实体?
【发布时间】:2020-09-16 17:13:30
【问题描述】:

我正在尽最大努力保持查询操作简单,只查询表的第一条记录以检查我的查询是否有效并且不会引发异常。

我在 SO 上看到了很多关于检索前“n”个实体的答案。我的要求是,仅将查询操作应用于第一个实体,无论它是否与查询中指定的过滤器匹配并中止。

我试过了:

TableQuery query = new TableQuery().Where("MyKey eq 'RawMaterial'").Take(1);

但如果没有匹配的实体,此查询将执行完整的表扫描。有这方面的cmet吗?

【问题讨论】:

  • 如果你正在搜索一个,你必须扫描所有如果没有匹配。
  • 这就是问题所在。要求是“选择第一个实体,如果匹配则获取,否则中止!”
  • 达到数量后,进入图书馆将中止,而不是搜索整个列表。
  • 你能写一个例子吗?

标签: c# azure azure-table-storage


【解决方案1】:

这里是示例代码:

            List<int> numbers = Enumerable.Range(0, 100000000).Select(x => x).ToList();

            DateTime startAll = DateTime.Now;
            List<int> none = numbers.Where(x => x == -1).Take(1).ToList();
            DateTime endAll = DateTime.Now;

            DateTime startOne = DateTime.Now;
            List<int> one = numbers.Where(x => x == 1).Take(1).ToList();
            DateTime endOne = DateTime.Now;

            Console.WriteLine("Time One : {0}, Time All {1}", endOne.Subtract(startOne).ToString(), endAll.Subtract(startAll).ToString());
            Console.ReadLine();

【讨论】:

  • 感谢您的回答。我的问题与列表无关。它是关于从 Azure 表存储中单独获取第一个实体。
  • 代码所做的是比较遍历整个列表的时间与仅读取一个值的时间。如果你使用 First(),总会有一个 Enumerable 列表。您的表是一个可枚举列表。
猜你喜欢
  • 2013-07-03
  • 2017-06-30
  • 2019-06-04
  • 2011-05-10
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多