我正在試圖製作一個程序,讓用戶放置在城市中的一些城市和溫度。隨後,溫度清單將自行排列,以便能夠列出清單中最冷和最熱的城市。但問題是隻有溫度列表纔會被排序。這使得城市的溫度比以前有所不同。將兩個不同類型的列表鏈接在一起
那麼我可以把這兩個列表連接在一起,所以當第二個列表中的溫度發生變化時,原來獲得溫度的城市將發生變化?
我對編程很陌生。
謝謝。
我正在試圖製作一個程序,讓用戶放置在城市中的一些城市和溫度。隨後,溫度清單將自行排列,以便能夠列出清單中最冷和最熱的城市。但問題是隻有溫度列表纔會被排序。這使得城市的溫度比以前有所不同。將兩個不同類型的列表鏈接在一起
那麼我可以把這兩個列表連接在一起,所以當第二個列表中的溫度發生變化時,原來獲得溫度的城市將發生變化?
我對編程很陌生。
謝謝。
你可能希望把城市名稱和城市溫度在一起,就像
public class City
{
public string Name;
public double Temperature;
// etc.
}
然後創建一個List<City>
,每當你需要根據特定的字段進行排序列表中,你可以使用LINQ(using 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();
編輯:
萬一你與之前3.5的.NET版本的工作,不會有任何LINQ的,所以你需要一些替代方案:
如果你只需要一個排序順序,您可以實現IComparable
接口
public class City : IComparable
{
public int CompareTo(object obj)
{
City other = obj as City;
if (other == null)
// obj was not a City, so this should throw an exception in my opinion
throw new ArgumentException;
return this.Temperature.CompareTo(other.Temperature);
}
}
然後你就可以用排序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
我建議你創建一個包含城市信息和例如相應的溫度
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;
}
}
,然後創建一個List<City>
的一個對象,
cityListName.Add(new City("CityName",9000,16.5));
...
然後添加你的城市您可以通過溫度對此List
排序cityListName.OrderBy((city)=>city.Temperature)
我希望這有助於。 如果您還有其他問題,請隨時提問。
你需要有結構來保持城市和溫度在一起。
public class CityInfo
{
public string CityName {get; set;}
public float Temperature {get; set;}
}
然後創建這個類的列表。
List<CityInfo> citiInfos = new List<CityInfo>();
然後你就可以排序依據:
的城市名稱:
var sortedByCity = citiInfos.OrderBy(cityInfo => cityInfo.CityName);
溫度:
var sortedByTemp = citiInfos.OrderBy(cityInfo => cityInfo.Temperature);
如果這聽起來邏輯通常孤單的方式來做到這一點..你應該嘗試張貼你已經嘗試過的東西 – Sayse 2013-03-05 12:01:57
雖然我同意這不是一個寫得很好的問題(專業人士的描述因爲你已經有了一些具體的代碼,所以blem有點抽象和混亂),我不確定最近的選票是什麼......我在這裏看到的災難性更大。無論如何,要走的路可能是一個列表,其中的項目存儲城市名稱*和*溫度。 – 2013-03-05 12:03:12
沒有足夠的人善於編程。如果你使用兩個名單,你會如何知道哪個城市與哪個城市相連?你需要一個對象來保存兩個值。或者爲你自己創建類,或者在這種情況下,可能'Tuple'就足夠了。現在你有一個'List ',你可以通過其中一個命令。 'list.OrderBy(x => x.Item1)'或'list.OrderBy(x => x.Item2)' –
Corak
2013-03-05 12:10:38