Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-获取列表中的3个最低值,由列表中对象的公共属性度量_C#_List - Fatal编程技术网

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

C#-获取列表中的3个最低值,由列表中对象的公共属性度量,c#,list,C#,List,对不起,如果我的术语不是很好,我不是一个专业的程序员 我有一个列表,其中“Something”是一个结构。此结构包含对象,每个对象在类中都有自己的公共属性/字段。我想按顺序对列表排序,但要按这些嵌套属性/字段中的值排序。然后我想返回这些值的列表,而不是结构 我知道这很让人困惑,但我一直很难做到这一点。目前,我只得到一个返回的计数为20的列表(这是我正在使用的完整数据集),但我只希望3个值具有最小的值 以下是我正在使用的一些代码,以供上下文和进一步解释: // Returns 3

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

我有一个列表,其中“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;
    }
//返回指定位置最近的3个桩号
邻近站点的公共静态列表(地理坐标位置)
{
列表站=新列表();
foreach(所有火车站)
{
添加(新车站步行(s,新步行(位置,s位置));
}
//返回在StationWalk结构中具有与之对应的最低StationWalk.Walk.duration值的3个TrainStation对象
stations.OrderBy(walks=>walks.walk.duration).Take(3);
List returnList=新列表();
foreach(车站内的车站步行)
{
返回列表。添加(s站);
}
退货清单;
}
私人结构站径
{
公共车站步行道(火车站、步行道)
{
这个站=站;
this.walk=walk;
}
公共火车站;
公众步行;
}
“Walk”是一个包含“duration”字段的类。这表示步行所需的时间。更具体地说,我的总体目标是在列表中的20次步行中找出哪3次是最快的。但是“行走”是StationWalk结构的属性,“持续时间”是行走的属性


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

OrderBy和
Take
都返回一个新集合,它们不会修改现有集合,因此,您需要存储对以下方法返回的新集合的引用:

stations =  stations.OrderBy(walks => walks.walk.duration).Take(3).ToList();
如果希望保留对原始列表的引用,以便在代码中进一步使用,则只需将结果存储在局部变量中:

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

OrderBy
Take
都返回一个新集合,它们不修改现有集合,因此您需要存储对以下方法返回的新集合的引用:

stations =  stations.OrderBy(walks => walks.walk.duration).Take(3).ToList();
如果希望保留对原始列表的引用,以便在代码中进一步使用,则只需将结果存储在局部变量中:

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

那么你所拥有的又有什么问题呢?那么你所拥有的又有什么问题呢?