我有一本字典。
Dictionary<string, List<string[]>> years = new Dictionary<string, List<string[]>>
鍵代表一個年份,每個值都是一個字串陣列串列,每個陣列只有 2 個元素:給定年份的日期和 ID 號(不重要)。所以如果我只看 2021 年,它看起來像這樣:
years[2021] == {
["09-30-2021","123456"],
["12-30-2021","654321"],
["03-30-2021","246810"],
["06-30-2021","135791"]
}
我需要做的是按日期對這本字典中的每個字串陣列串列進行排序,以便對于任何給定年份,日期/ID 對串列都按日期排序。我不確定是否需要 Asc/desc 順序,所以理想情況下,我想找到一種解決方案,讓我可以很容易地在其中任何一個之間切換。
任何幫助將不勝感激!
uj5u.com熱心網友回復:
這應該有效:
public void SortYears(Dictionary<string, List<string[]>> years)
{
foreach(var key in years.Keys)
{
var yearList = years[key];
yearList = yearList.OrderBy(x => DateTime.ParseExact(x[0], "MM-dd-yyyy", null)).ToList();
years[key] = yearList;
}
}
我也贊同其他人發表的觀點,即使用實際物件而不是字串陣列會更好。您現在正在做的事情將有助于一遍又一遍地重新決議相同的日期值,并考慮到文化/國際化問題,這是一個緩慢且容易出錯的操作。但我理解這是否是您首先獲取資料的方式。
uj5u.com熱心網友回復:
我假設你的字典實際上是這樣的:
Dictionary<int, List<string[]>> years = new Dictionary<int, List<string[]>>()
{
{ 2021, new List<string[]>()
{
new [] { "09-30-2021","123456" },
new [] { "12-30-2021","654321" },
new [] { "03-30-2021","246810" },
new [] { "06-30-2021","135791" },
}
}
};
更好的結構是Dictionary<int, SortedList<DateTime, string>>.
轉換非常簡單:
Dictionary<int, SortedList<DateTime, string>> better =
years
.ToDictionary(
x => x.Key,
x => new SortedList<DateTime, string>(
x.Value.ToDictionary(
y => DateTime.ParseExact(y[0], "MM-dd-yyyy", CultureInfo.InvariantCulture),
y => y[1])));
這給了我:
![C# - 如何按陣列內的專案對字串陣列串列 ( List<string[]> ) 進行排序?](https://img.uj5u.com/2021/11/19/2402bbd3183b4bf6bbac93e2833e0986.png)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/360541.html
標籤:C#
