重複を防止しようとしているときにac#ジェネリックリストに値を追加していますが、成功していません。以下のこのコードが機能しない理由を知っている人はいますか?
ここに簡単なクラスがあります:
public class DrivePairs
{
public int Start { get; set; }
public int End { get; set; }
}
そして、これが上記のクラスのジェネリックリストを返そうとする私のメソッドです:
ArrayList found = DriveRepository.GetDriveArray(9, 138);
List<DrivePairs> drivePairs = new List<DrivePairs>();
foreach (List<int> item in found)
{
int count = item.Count;
if (count > 1)
{
for (int i = 0; i < (count - 1); i++)
{
DrivePairs drivePair = new DrivePairs();
drivePair.Start = item[i];
drivePair.End = item[i + 1];
if (!drivePairs.Contains(drivePair))
drivePairs.Add(drivePair);
}
}
}
drivePairs = drivePairs.Distinct().ToList();
ご覧のとおり、私にはがありArrayList
、各行には。が含まれていList<int>
ます。私がやっていることは、それぞれを調べて、ペアだけを含むリストに追加することです。たとえば、List<int>
が含まれている場合[1,3,6,9]
、ペアリストに3つのエントリを追加します。
[1,3]
[3,6]
[6,9]
重複を認識しないことを除けば、すべて正常に機能します。私はこの行で十分だと思いました:
if (!drivePairs.Contains(drivePair))
drivePairs.Add(drivePair);
しかし、それはそれらすべてを追加し続けます。最後にを追加しDistinct()
ても削除されません。それらをに追加しようとしましたHashSet
が、それでもすべての重複が含まれています。
重複が検出されない理由を知っている人はいますか?