2014-12-19 52 views
2

我想比較ParseObject上的兩個關係,並確定它們是否相等,最好不要在關係上調用fetch()。我試過這樣做:在Parse.com中比較關係c#

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

但它不起作用。我試圖搜索谷歌,但還沒有找到我的問題的答案。是否有可能比較這些關係,而不提取他們的數據?

任何幫助將不勝感激。謝謝。

回答

2

我以前沒有用過這個,但是我想我會看看文檔和代碼。

用於確定是否2個ParseObject實例在ObjectId屬性狀態的標準的註釋被視爲相等:

一個Parse.ParseObject.ClassName和Parse.ParseObject.ObjectId的組合唯一地標識一個對象你的申請。

因此,如果類名和的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

0

沒關係,我找到了我的答案。下面的聲明工作正常。

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