我在尝试防止重复时向 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]
我想在我的配对列表中添加三个条目:
[1,3]
[3,6]
[6,9]
除了不识别重复项之外,这一切都很好。我认为这条线就足够了:
if (!drivePairs.Contains(drivePair))
drivePairs.Add(drivePair);
但它继续将它们全部添加。即使我Distinct()
在最后添加 a ,它仍然不会删除它们。我也尝试将它们添加到 aHashSet
中,但它仍然包含所有重复项。
任何人都知道为什么重复可能不会被拾取的原因?