如何比較可能是兩個數組的兩個對象。將兩個對象比較爲Array;
var arrayServer = serv as Array;
var arrayLocal = local as Array;
我現在不爲什麼,但我不能使用SequenceEqual爲arrayServer
或arrayLocal
。
如何比較可能是兩個數組的兩個對象。將兩個對象比較爲Array;
var arrayServer = serv as Array;
var arrayLocal = local as Array;
我現在不爲什麼,但我不能使用SequenceEqual爲arrayServer
或arrayLocal
。
我不能使用
SequenceEqual
代替arrayServer
或arrayLocal
。
這是因爲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}>();
@D赤柱謝謝! –
SequenceEqual
是LINQ方法,一種其中作爲通用IEnumerable<T>
的擴展實現。 Array
沒有實現IEnumerable<T>
,但你可以通過調用OfType
或Cast
從它那裏得到通用IEnumerable<T>
:
bool areEqual = arrayLocal.Cast<theType>().SequenceEqual(arrayServer.Cast<theType>());
比較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。儘管使用數組並不完全有趣。
你想用什麼方式比較它們? –
@Glorin由元素組成的Oakenfoot。 –