C# - 获取列表中的 3 个最低值,由列表中对象的公共属性衡量

康纳

对不起,如果我的术语不是很好,我不是专业的程序员。

我有一个 List<Something>,其中“Something”是一个结构。该结构包含对象,每个对象在类中都有自己的公共属性/字段。我想按顺序对列表进行排序 - 但通过在这些嵌套属性/字段中找到的值。然后我想返回这些值的列表,而不是结构。

我知道这很令人困惑,但我在尝试时遇到了麻烦。目前我只得到一个返回的列表,计数为 20(这是我正在使用的完整数据集),但我只想要 3 个值的最小值。

对于上下文和进一步解释,这是我正在使用的一些代码:

        // Returns 3 nearest stations to the location specified
    public static List<TrainStation> nearbyStations(GeoCoordinate location)
    {
        List<StationWalk> stations = new List<StationWalk>();
        foreach (TrainStation s in All)
        {
            stations.Add(new StationWalk(s, new Walk(location, s.location)));
        }

        // return 3 TrainStation objects that have the lowest StationWalk.Walk.duration values corresponding with them in the StationWalk struct
        stations.OrderBy(walks => walks.walk.duration).Take(3);

        List<TrainStation> returnList = new List<TrainStation>();
        foreach (StationWalk s in stations)
        {
            returnList.Add(s.station);
        }
        return returnList;
    }

    private struct StationWalk
    {
        public StationWalk(TrainStation station, Walk walk)
        {
            this.station = station;
            this.walk = walk;
        }

        public TrainStation station;
        public Walk walk;
    }

“Walk”是一个包含“duration”字段的类。这代表步行所需的时间。更具体地说,我在这里的总体目标是找出列表中所有 20 次步行中,哪 3 次步行最快。但是“walks”是 StationWalk 结构的属性,而“duration”是 Walk 的属性。

我该怎么做呢?真的很抱歉,如果这没有得到很好的解释,尽管是自己写的,但我自己却很困惑,但独自试图向其他人解释。感谢任何帮助。

埃桑·萨贾德

OrderByTake都返回一个新的集合,他们不修改现有的集合,所以你需要存储的参考由像方法返回新的集合:

stations =  stations.OrderBy(walks => walks.walk.duration).Take(3).ToList();

如果您想在代码中保留对原始列表的引用以供进一步使用,则只需将结果存储在局部变量中:

var lowestThreeStations =  stations.OrderBy(walks => walks.walk.duration).Take(3).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个列表中返回3个最低值的列表

从3个联接表tsql中获取C#中列表中的值作为列表

从 3 个不同的列表中获取匹配对象的列表

在c#中复制对象之间的公共属性

从另一个列表中的列表中的对象获取最大值[C#]

我想对列表进行排序并在 c# linq 中存储最低值之一

从子列表中获取对象c#

如何在Python 3中获取列表中的列表编号?

获取C#中的单个属性值的列表-反射

获取Capistrano 3中的设置变量列表

从列表中返回最低值[R]

如何使用 Stream API 从列表中获取具有最高值的 3 个对象

使用列表理解在3D列表中获取对的问题

合并两个不同的列表,然后按C#上的公共属性排序?

C ++无法访问由向量的迭代器返回的类中的公共属性

使用c#获取两个不同对象的公共属性

如何获取前两个列表中的公共元素并保存到python 3中的新列表?

从列表中获取价值(C#UWP)

C#从列表中获取多行,其中

从D3中的列表获取元素属性

获取s3存储桶中对象的标签列表

如何从Vue 3中的列表中的列表中获取所有值

使用键列表获取c#中的字典值属性列表

C# 如何从父子列表中获取 ID 列表

从infile获取列表中的前3个数字-python

在Pandas DataFrame中查找前3天的最低值

删除列表c ++中的最后3个元素

比较3个列表之间的值,并将第一个列表中的缺失值添加到其余2个列表中-C#

如何仅从列表C#中获取唯一值