从列表中删除项目并添加到另一个项目

时间:2019-05-25 08:43:24

标签: c#

我有一个要重新排列的电台列表。我需要这样做的方式如下:

从一个列表中删除值,然后将其移动到另一个列表中以进行重新排列。 我需要根据其总影响插入这些值。为此,我想在已经填充的列表中找到理想的位置。

现在,它基于坐标之间的距离。所以可以说这是我的老名单:

"PO" 1 1
"wSX" 100 150
"JIK" 300 300
"LPO" 200 250
"NJH" 100 350

因此,计算这些值的距离可得出: PO-> WSX-> JIK-> LPO-> NJH-> PO = 987公里

我的新列表如下:

"PO" 1 1
"WSX" 100 150
"JIK" 300 300
"PO" 1 1

我想将LPO添加到列表中的索引1并计算距离, 然后我要从那里拿走并将其移至索引2等。从那里我要选择给出最短总距离的变化并将其留在那。然后,我继续尝试其他值,直到不再需要移动为止。

这应该使我可以在短距离的情况下使用一组电台。

我尝试使用while循环来删除和添加电台,这是一种工作方式,但是我不确定如何使它同时检查其他位置。

我还需要一些逻辑操作的帮助,以便确定距离最短的变化。

///c#

//Rearrange the list

int value = 0;

while(list.Count != 0)
{
   newlist.Add(oldlist[value]);

   oldlist.RemoveAt(0);
   value++;
}

//find the smaller variation

if (i == 0)
     smallest = value;

else if(value < smallest)
     smallest = value;

我主要只需要一些帮助来创建遵循此路线的循环。如果您需要其他任何信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

您如何将其存储在SortedList中呢?

这应该简化您的问题,您所需要做的就是将距离存储为键,将实际对象存储为值。 SortedList应该照顾其余的工作。尽管可能需要更多的内存。

参考:https://docs.microsoft.com/en-us/dotnet/api/system.collections.sortedlist?view=netframework-4.8