【发布时间】:2016-07-24 16:22:23
【问题描述】:
我在这里搜索了很多关于如何使用 .remove 和 .removeAll 扩展名作为列表的示例。在尝试完成这项工作时,我似乎无法让 .removeAll 以我想要的方式从列表中实际删除项目。它所做的是保留列表中每个值的一份副本。
循环正在遍历由“k”描述的一组值。我想要的是如果“k”的值已经在列表中,我想将它完全从列表中删除。如果遇到不在列表中的“k”值,我想添加它。
for(double k=Low[0]; k<=High[0]; k +=TickSize)
{
if(LiTZ.Contains(k) ) { //if k is in list
LiTZ.RemoveAll(item => item == k); //remove it
}
else {
LiTZ.Add(k); //if k not in list, add it
}
}
我还考虑过创建一个单独的列表,并在第一个“if”语句中添加到该列表中,然后比较并以某种方式从第一个列表中删除项目,如下所示:
for(double k=Low[0]; k<=High[0]; k +=TickSize)
{
if(LiTZ.Contains(k) ) { //if k is in list
LiRemovalList.Add(k); //List of items to remove later
}
else {
LiTZ.Add(k); //if k not in list, add it
}
}
//Code to compare and remove items in LiRemovalList from LiTZ
是否可以按照我尝试的方式直接在列表上进行迭代,而无需创建其他列表?
【问题讨论】: