[英]Most elegant way to convert an array of even keys and odd values to a dictionary?
我有一個包含交替鍵和值的數組,因為我不知道如何在默認活頁夾的url中的GET中傳遞字典。
字符串數組進入控制器,確定:
string[] values = new string[] {"123", "Pie", "456", "Cake"};
我需要將其轉換為字典:
Dictionary<int,string> Deserts = new Dictionary<int,string>() { {123, "Pie"}, {456, "Cake"} };
我試過了:
values.ToDictionary(v => int.Parse(v), v => values.IndexOf(v) + 1);
但這會在運行時產生錯誤。 找不到索引。
使用for循環
var deserts = new Dictionary<int,string>();
for (var i = 0; i < values.Length; i += 2) {
deserts.Add(int.Parse(values[i]), values[i+1]);
}
簡單的循環就可以做到(我個人會這樣),但是如果您想使用LINQ,則可以使用moreLINQ庫中的Windowed
。 它看起來像這樣:
values.Windowed(2).ToDictionary(v => int.Parse(v.First()), v => v.Last());
您還可以通過Select
+ GroupBy
擺脫GroupBy
:
values.Select((Value, Index) => { Value, Index })
.GroupBy(x => x.Index / 2)
.ToDictionary(g => int.Parse(g.First().Value), g => g.Last().Value);
我不會稱它為優雅。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.