我正在使用Azure存储表,我有这样的条目:
PK RK TypeOfSerializedObject
foo_0 bar_0 type1
foo_0 bar_0_var_1 type2
有没有解决方案来检索第一行(bar_0)而没有另一行(bar_0_var_1)? (在我的情况下,这两行存储了不同类型的序列化对象,我无法检索它们。)
我正在尝试做这样的事情:
IQueryable<type1> type1ent = from t in context.CreateQuery<type1>(tableName)
where t.PartitionKey == String.Format("foo_{0:0}", arg1)
&& t.RowKey.CompareTo("bar_0") >= 0
&& t.RowKey.CompareTo("bar_9") <= 0
select t;
我需要包含一些查询选项,如“t.RowKey.Length == 5”,但它无效。
你有什么想法吗?
编辑:
最后,我决定将数据结构更改为:
PK RK TypeOfSerializedObject
foo_0 bar_0 type1
foo_0 var_1 type2
foo_0 var_2 type3
foo_0 var_3 type4
foo_0 var_4 type5
etc.
答案 0 :(得分:0)
我已经做到了(效率不高),但我仍然在寻找性能更佳的解决方案:
IQueryable<string> type1ent = from t in context.CreateQuery<type1>(tableName)
where t.PartitionKey == String.Format("foo_{0:0}", arg1)
&& t.RowKey.CompareTo("bar_0") > 0
&& t.RowKey.CompareTo("bar_:") < 0
select new String(t.RowKey.ToArray());
foreach(string rowKey in type1ent)
if (rowKey.Length == "bar_0".Length)
{
type1Entity = (from t in context.CreateQuery<type1>(tableName)
where t.PartitionKey == String.Format("foo_{0:0}", arg1)
&& t.RowKey.CompareTo(rowKey) == 0
select t).FirstOrDefault();
TYPE type = // deserialization of type1Entity.SerializedObject
}