簡體   English   中英

將偶數鍵和奇數數組轉換為字典的最優雅方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM