頭を抱えているように見えない問題に直面しています。同じタイプのリストが 2 つあり、それらのリストが一致するかどうかを確認する必要があります。コメントアウトされた for ループと現在使用中のネストされた foreach ループに関して問題が発生しています。両方を使用する必要はありません。1つはこれを理解しようとしていたことです。
これをデバッガーで実行したところ、両方のリストが同じデータを保持していることがわかりました。(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;
}