比较Parse.com中的关系c#

时间:2014-12-19 02:43:46

标签: c# parse-platform

我想比较ParseObject上的两个关系,并确定它们是否相等,最好不要在关系上调用fetch()。我试过这样做:

MyParseObject.Get<ParseObject>("MyRelation") == MyOtherParseObject.Get<ParseObject>("MyRelation")

但它不起作用。我试过搜索谷歌,但没有找到我的问题的答案。是否可以在不提取数据的情况下比较这些关系?

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

我之前没有用过这个,但我还是想看一下文档和代码。

ObjectId属性的注释说明了确定两个ParseObject实例是否相等的标准:

  

Parse.ParseObject.ClassName和Parse.ParseObject.ObjectId的组合唯一标识应用程序中的对象。

因此,如果ClassName和ObjectId属性相等,则两个实例相等:

var my1 = MyParseObject.Get<ParseObject>("MyRelation");
var my2 = MyOtherParseObject.Get<ParseObject>("MyRelation");

return my1.ObjectId == my2.ObjectId && my1.ClassName == my2.ClassName;

但是,您不必手动执行此操作,而是找到了他们为您提供的方法:

return MyParseObject.Get<ParseObject>("MyRelation")
                    .HasSameId(MyOtherParseObject.Get<ParseObject>("MyRelation"));

来自HasSameId文档:

  

一个辅助函数,用于检查两个ParseObjects是否指向云中的同一个对象。

这是它在内部做的事情(还有其他的东西,但这是比较部分):

return other != null
    && object.Equals((object) this.ClassName, (object) other.ClassName)
    && object.Equals((object) this.ObjectId, (object) other.ObjectId);

有关使用==符号的原始代码的说明...

如果ParseObject类有overloaded the == operator并指定它应该比较ClassName和ObjectId,那么原始代码就可以了。

由于他们没有重载该运算符,==运算符的默认行为是进行参考比较,MyParseObject.Get<ParseObject>MyOtherParseObject.Get<ParseObject>在技术上是两个不同的对象,它返回false

答案 1 :(得分:0)

没关系,我找到了答案。以下声明工作正常。

MyParseObject.Get<ParseObject>("MyRelation").HasSameId(MyOtherParseObject.Get<ParseObject>("MyRelation"))