如何比较两个可能是两个数组的对象。
var arrayServer = serv as Array;
var arrayLocal = local as Array;
我现在不知道为什么,但我不能将{Sequence 1qual}用于arrayServer
或arrayLocal
。
答案 0 :(得分:3)
我无法将
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}>();
答案 1 :(得分:0)
SequenceEqual
是LINQ方法之一,它作为通用IEnumerable<T>
的扩展实现。 Array
没有实现IEnumerable<T>
,但您可以通过调用IEnumerable<T>
或OfType
来获取通用Cast
:
bool areEqual = arrayLocal.Cast<theType>().SequenceEqual(arrayServer.Cast<theType>());
答案 2 :(得分: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。虽然使用数组并不是很有趣。