是否可以从 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
并访问默认属性,例如 Timestamp
、RowKey
等。该类型还包含 [=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;
我正在使用 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
并访问默认属性,例如 Timestamp
、RowKey
等。该类型还包含 [=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;