我遇到了一个我似乎无法解决的问题。我有两个相同类型的列表,我需要检查这些列表是否匹配。关于注释掉的 for 循环和现在使用的嵌套 foreach 循环,我遇到了问题。我不需要同时使用两者,一个是我试图解决这个问题。
我已经通过调试器运行了这个,发现两个列表都包含相同的数据,我假设(使用 VS2010 调试器)在列表中的相同元素中。但是,当它被循环通过时,它在第一个元素处失败。
我已经从类似的问题中对此进行了研究,但我对 LINQ 表达式不是很熟悉(我在业余时间做笔记以研究它)。
private bool ListMatch(List<T> list1, List<T> list2)
{
if (list1 == null && list2 == null)
{
return true;
}
if ((list1 == null) || (list2 == null))
{
return false;
}
if (list1.Count != list2.Count)
{
return false;
}
if( list1.Equals( list2 ) )
{
return true;
}
/*for (var idx = 0; idx < list1.Count; idx++)
{
if( list1[ idx ] != list2[ idx ] )
{
return false;
}
}*/
foreach( var x in list1 )
{
bool hasDuplicates = false;
foreach( var y in list2 )
{
if( x == y )
{
hasDuplicates = true;
break;
}
}
if( hasDuplicates )
{
return true;
}
return false;
}
return true;
}