0

我正在使用 Azure 存储表,我有这样的条目:

PK      RK            TypeOfSerializedObject
foo_0   bar_0         type1
foo_0   bar_0_var_1   type2

是否有任何解决方案可以在没有另一行(bar_0_var_1)的情况下检索第一行(bar_0)?(在我的情况下,这两行存储不同类型的序列化对象,我无法同时检索它)。

我正在尝试做这样的事情:

            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.
4

1 回答 1

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
                }
于 2013-09-06T13:52:28.517 回答