在代码的顶部:如何找到列表中具有相同值并操作此项目的所有项目?
[System.Serializable]
public class PosDisPair //Name the pair however you like
{
public float Distance;
public Vector3 Pos;
}
然后:
private List<PosDisPair> pairList = new List<PosDisPair>();
而且
private void FindDistances()
{
pairList = new List<PosDisPair>();
for (int i = 0; i < objects.Count; i++)
{
PosDisPair pairToAdd = new PosDisPair();
pairToAdd.Distance = Vector3.Distance(EndStartPoints[0].transform.position, objects[i].transform.position);
pairToAdd.Pos = objects[i].transform.position;
pairList.Add(pairToAdd);
}
pairList.Sort(delegate (PosDisPair a, PosDisPair b) {
return (a.Distance.CompareTo(b.Distance));
});
Manip();
}
而在去年
private void Manip()
{
List<float> samedistances = new List<float>();
pairList = pairList.OrderBy(x => x.Distance).ToList();
for (int i = 0; i < pairList.Count; i++)
{
if (pairList[i].Distance == pairList[i+1].Distance)
{
samedistances.Add(pairList[i].Distance);
}
}
}
内MANIP方法我使用排序依据,以分类List by distance属性。 所以现在第一个距离是0,所以我不需要做任何事情。
然后有三个项目,每个的距离是10. 但是每个项目的位置是不一样的。
我想要做的是每次从列表中取出所有相同的距离项目。例如,要取所有10个距离项目,从这三个项目中取一个随机项目。
旁边拾取两个20的距离项目的随机之一,并再次每个相同的距离项目。
所以最后我会列出所有项目,距离和位置,但从每个相同的距离将只有一个项目。
所以在成对列表结束时,我将具有用于例如:
索引0 =距离0
指数1 =距离10
索引2 =距离14.45456
索引3 =距离20 。 。 。 指数44 =距离134
相同的距离有彼此的位置。
例如:
索引1距离10,posiiton 1,1,1-
索引2距离10,位置2,1,1
索引3距离10,位置3,1 ,1
因此,当它将选择一个随机距离10时,它将与它自己的位置。
它几乎一样,如果你有'GroupBy'一个属性,然后'Select'单个项目... – maccettura