是否可以从 Azure table 中只获取一个列值?

Is it possible to get only one column value from an Azure table?

我正在使用 C# 与 azure table 通信。我很好奇是否有一种方法可以只获取一个值而不是返回整个实体?

假设我只想获取行的时间戳。有没有办法只检索与键匹配的时间戳,或者我必须使用整个实体?

这是我的意思的一个例子:

我可以这样做吗:

DateTime time = table.Retrieve(partitionKey, rowKey, Timestamp);

还是我必须这样做:

MyClass object = table.Retrieve(partitionKey, rowKey).Result as MyClass;
Console.WriteLine(object.TimeStamp);

我试图避免编写不同的 class 或为可能输入到我的 table 中的每个可能实体添加新属性。

我认为您正在寻找 DynamicTableEntity。您可以将 Execute 调用的结果转换为 DynamicTableEntity 并访问默认属性,例如 TimestampRowKey 等。该类型还包含 [=16= 的定义], Dictionary of (string=column name) -> (value=a TableEntityProperty encapsulating any custom data.

就检索存储中的属性子集而言,您可以将第三个参数传递给 TableOperation.Retrieve,它指定执行调用时要检索的自定义属性子集。

//table is a CloudTable object
List<string> propertiesToRetrieve = new List<string>() { "MyIntProperty"}
TableOperation op = TableOperation.Retrieve("partitionkey", "rowkey", propertiesToRetrieve);
TableResult result = table.Execute(op);
DynamicTableEntity myEntity = (DynamicTableEntity)result.Result;
DateTime ts = myEntity.Timestamp;
int? customIntProperty = myEntity.Properties["MyIntProperty"].Int32Value;