Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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# 将两个不同类型的列表链接在一起_C# - Fatal编程技术网

C# 将两个不同类型的列表链接在一起

C# 将两个不同类型的列表链接在一起,c#,C#,我正在尝试制作一个程序,让用户输入一些城市和城市的温度。稍后,带有温度的列表将自行排序,以便我可以得到列表中最冷和最热的城市。但问题是,只有带有温度的列表才会被排序。这使得城市的温度与以前不同 那么我能把这两个列表链接在一起吗?当第二个列表中的温度改变位置时,最初获得温度的城市将改变位置 我是编程新手 谢谢。你可能想把城市名称和城市温度放在一起,比如 public class City { public string Name; public double Temperature

我正在尝试制作一个程序,让用户输入一些城市和城市的温度。稍后,带有温度的列表将自行排序,以便我可以得到列表中最冷和最热的城市。但问题是,只有带有温度的列表才会被排序。这使得城市的温度与以前不同

那么我能把这两个列表链接在一起吗?当第二个列表中的温度改变位置时,最初获得温度的城市将改变位置

我是编程新手


谢谢。

你可能想把城市名称和城市温度放在一起,比如

public class City
{
    public string Name;
    public double Temperature;
    // etc.
}
然后创建一个
列表
,当您需要根据特定字段对该列表进行排序时,可以使用Linq(
使用System.Linq;
)对列表进行排序

List<City> sortedList = cityList.OrderBy(city => city.Temperature).ToList();
           // or if you want the list sorted the other way around:
           sortedList = cityList.OrderByDescending(city => city.Temperature).ToList();
然后可以使用
cityList.sort()对列表进行排序

  • 或者,如果您希望能够有时按温度,有时按名称对列表进行排序,则需要与代表一起工作

    cityList.Sort(delegate (City a, City b)
                  {
                      // -1 => a <  b
                      //  0 => a == b
                      //  1 => a >  b
                      return a.Name.CompareTo(b.Name);
                  });
    // cityList is now sorted by name
    
    cityList.Sort(delegate (City a, City b)
                  {
                      // -1 => a <  b
                      //  0 => a == b
                      //  1 => a >  b
                      return a.Temperature.CompareTo(b.Temperature);
                  });
    // cityList is now sorted by temperature
    
    cityList.Sort(代表城市a、城市b)
    {
    //-1=>aa==b
    //1=>a>b
    返回a.Name.CompareTo(b.Name);
    });
    //城市列表现在按名称排序
    cityList.Sort(代理(城市a、城市b)
    {
    //-1=>aa==b
    //1=>a>b
    返回a.温度比较器(b.温度);
    });
    //城市列表现在按温度排序
    

  • 我建议您创建一个包含城市信息和相应温度的对象,例如

    class City
    {
        public string Name {get; private set;}
        public int Inhabitants {get; private set;}
        public float Temperature {get; private set;}
    
        public City (string name, int inhabitants, float temp)
        {
            Name = name;
            Inhabitants = inhabitants;
            Temperature = temperature;
        }
    }
    
    然后创建一个
    列表
    ,将您的城市添加到

    cityListName.Add(new City("CityName",9000,16.5));
    ...
    
    然后您可以使用
    cityListName.OrderBy((city)=>city.temperature)按温度对该
    列表进行排序

    我希望这有帮助。
    如果您还有其他问题,请随时提问。

    您需要有一个结构来将城市和温度保持在一起。。e、 g

    public class CityInfo 
    { 
      public string CityName {get; set;}
      public float Temperature {get; set;}
    }
    
    然后创建该类的列表

    List<CityInfo> citiInfos = new List<CityInfo>();
    
    关于温度:

    var sortedByTemp = citiInfos.OrderBy(cityInfo => cityInfo.Temperature);
    

    如果听起来合乎逻辑,通常有一种方法可以做到。。你应该试着发布你尝试过的东西,虽然我同意这不是一个写得太好的问题(问题的描述有点抽象和混乱,因为你似乎已经有了一些具体的代码),但我不确定投票结果是什么。。。我在这里看到的灾难要严重得多。不管怎么说,最好的办法可能是列出一个清单,上面有一个城市名称和温度。没有足够的人愿意编程。如果你使用两个列表,你怎么知道哪个城市与哪个温度有关?您需要一个对象将两个值保持在一起。或者为此创建自己的类,或者在本例中,
    Tuple
    就足够了。现在您有了一个
    List x.Item1)
    List.OrderBy(x=>x.Item2)
    @Elgon,下次发布问题时:1。输入一些您尝试过但不起作用的代码。2.提供错误详细信息(如适用)3。努力把你的问题陈述写得更好。OP似乎有一个合理的问题,他似乎已经尝试了一些东西。正如O.R.Mapper指出的那样,情况并没有变得更糟。他只是没有很好地表达他的问题,也没有发布代码。考虑到他是新来的,所以,依我看,我们应该告诉他出了什么问题,而不是简单地投反对票和泄气。在这种情况下,我们是否可以指出一些常见问题?
    var sortedByCity = citiInfos.OrderBy(cityInfo => cityInfo.CityName);
    
    var sortedByTemp = citiInfos.OrderBy(cityInfo => cityInfo.Temperature);