比较 Parse.com c# 中的关系

本文关键字:关系 Parse com 比较 | 更新日期: 2023-09-27 18:34:37

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

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

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

任何帮助将不胜感激。谢谢。

比较 Parse.com c# 中的关系

我以前没有用过这个,但我想无论如何我都会看看文档和代码。

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 文档:

一个帮助程序函数,用于检查两个 ParseObject 是否指向云中的同一对象。

这是

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

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

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

如果 ParseObject 类重载了 == 运算符并指定它应该比较 ClassName 和 ObjectId,那么您的原始代码就可以工作了。

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

关系,我已经找到了答案。下面的语句工作正常。

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