2015-12-02 111 views
0

如何比較可能是兩個數組的兩個對象。將兩個對象比較爲Array;

var arrayServer = serv as Array; 
    var arrayLocal = local as Array; 

我現在不爲什麼,但我不能使用SequenceEqual爲arrayServerarrayLocal

+5

你想用什麼方式比較它們? –

+0

@Glorin由元素組成的Oakenfoot。 –

回答

3

我不能使用SequenceEqual代替arrayServerarrayLocal

這是因爲Array沒有實現IEnumerable<T>這是必要的SequenceEqual。代替澆鑄到陣列的我會強制轉換爲IEnumerable<T>(與T是適當類型的收集項):

var arrayServer = serv as IEnumerable<{type}>; 
var arrayLocal = local as IEnumerable<{type}>; 

,或者使用Cast

var arrayServer = serv.Cast<{type}>(); 
var arrayLocal = local.Cast<{type}>(); 
+0

@D赤柱謝謝! –

0

SequenceEqual是LINQ方法,一種其中作爲通用IEnumerable<T>的擴展實現。 Array沒有實現IEnumerable<T>,但你可以通過調用OfTypeCast從它那裏得到通用IEnumerable<T>

bool areEqual = arrayLocal.Cast<theType>().SequenceEqual(arrayServer.Cast<theType>()); 
0

比較2個數組的元素,你可以使用一個循環:

bool itemsEqual = true; 
int i = 0; 
while(itemsEqual && i < arrayServ.Count) 
{ 
    if(arrayServ[i].Equals(arrayLocal[i]) 
    { 
     i++; 
     continue; 
    } 
    itemsEqual = false; 
    return itemsEqual; 
} 
return itemsEqual; 

這將遍歷serv數組,並將項目與同一索引處的本地項目進行比較。如果他們都是平等的,沒有什麼會發生,真正的會被返回。如果任何比較返回false,則返回false。儘管使用數組並不完全有趣。