Azure table 存储:如何仅通过分区键获取单个实体?
Azure table storage: How to get a single entity by a partition key only?
我正在尝试获取仅提供分区键的单个实体。我当前的代码从 IEnumerable 返回一个列表,但实际上它只是一个单一实体时,拥有一个列表似乎效率不高,我必须通过它执行 foreach。有没有办法实现 with 没有 list/IEnumerable?
var entities = currentTable.ExecuteQuery(new TableQuery<ItemEntity>()).Where(e => e.PartitionKey.Equals(itemEntity.xId)).ToList();
查询的结果总是一个 IEnumerable。
如果您只希望得到一个结果,您可以使用:
var result = currentTable.ExecuteQuery(new TableQuery<ItemEntity>()).Where(e => e.PartitionKey.Equals(itemEntity.xId));
// First element from the result. Will fail when there is no element
var entity1 = result.First();
// First element from the result. Will give null when no element is available.
var entity2 = result.FirstOrDefault();
// First element from the result. Will fail when there is no element, or more as one element
var entity3 = result.Single();
// First element from the result. Will give null when one element is available, or fail (Exeption) when more as one.
var entity4 = result.SingleOrDefault();
如果要获取指定实体,需要同时提供Partition key和row key。
但是如果你想得到一个随机的实体,你应该使用GvS提供的方法。
我正在尝试获取仅提供分区键的单个实体。我当前的代码从 IEnumerable 返回一个列表,但实际上它只是一个单一实体时,拥有一个列表似乎效率不高,我必须通过它执行 foreach。有没有办法实现 with 没有 list/IEnumerable?
var entities = currentTable.ExecuteQuery(new TableQuery<ItemEntity>()).Where(e => e.PartitionKey.Equals(itemEntity.xId)).ToList();
查询的结果总是一个 IEnumerable。
如果您只希望得到一个结果,您可以使用:
var result = currentTable.ExecuteQuery(new TableQuery<ItemEntity>()).Where(e => e.PartitionKey.Equals(itemEntity.xId));
// First element from the result. Will fail when there is no element
var entity1 = result.First();
// First element from the result. Will give null when no element is available.
var entity2 = result.FirstOrDefault();
// First element from the result. Will fail when there is no element, or more as one element
var entity3 = result.Single();
// First element from the result. Will give null when one element is available, or fail (Exeption) when more as one.
var entity4 = result.SingleOrDefault();
如果要获取指定实体,需要同时提供Partition key和row key。
但是如果你想得到一个随机的实体,你应该使用GvS提供的方法。