gpt4 book ai didi

c# - 查找包含最接近属性值的对象的列表索引

转载 作者:行者123 更新时间:2023-11-30 15:31:12 25 4
gpt4 key购买 nike

如何找到包含最接近属性值的对象的列表索引?

示例,MyData 类包含一个属性 Position。 MyDataHandler 类有一个 MyData 列表,位置是:1、3、14、15、22。

MyDataHandler 有一个名为 GetClosestIndexAt 的方法,如果输入值为 13,该方法必须返回索引 2。

示例代码:

public class MyData
{
public double Position { get; set; }
public string Name { get; set; }
}

public class MyDataHandler
{
private List<MyData> myDataList = new List<MyData>();

public MyDataHandler()
{
FillMyData(myDataList);
}

public int GetClosestIndexAt(double position)
{
int index = -1;
//How to get the index of the closest MyDataList.Position to position value.
//index = ?????
return index;
}

private void FillMyData(List<MyData> MyDataList)
{
//fill the data...
}
}

最佳答案

您可以使用 LINQ 来完成,如下所示:

var res = myDataList
.Select((v, i) => new {Position = v.Position, Index = i}) // Pair up the position and the index
.OrderBy(p => Math.Abs(p.Position - position)) // Order by the distance
.First().Index; // Grab the index of the first item

想法是将位置与其在列表中的索引配对,按与特定位置的距离排序,抓取第一项,并获取其索引。

需要单独处理myDataList中没有元素的情况。这是一个 demo on ideone .

关于c# - 查找包含最接近属性值的对象的列表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com