C# 如何使用LINQ将数组转换为字典

C# 如何使用LINQ将数组转换为字典,c#,arrays,linq,dictionary,C#,Arrays,Linq,Dictionary,我有一个字符串数组,我想使用Linq将其转换为字典。 我希望具有偶数索引(包括零)的元素在字典中是键,而具有奇数索引的元素是值。我使用循环创建了一个字典: string[] arr = new string[4]; arr[0] = "John"; arr[1] = "A"; arr[2] = "Luke"; arr[3] = "B"; Dictionary<string, string> myDict = new Dictionary<string, string>(

我有一个字符串数组,我想使用Linq将其转换为
字典。
我希望具有偶数索引(包括零)的元素在字典中是,而具有奇数索引的元素是。我使用循环
创建了一个字典:

string[] arr = new string[4];
arr[0] = "John";
arr[1] = "A";
arr[2] = "Luke";
arr[3] = "B";

Dictionary<string, string> myDict = new Dictionary<string, string>();

for (int i = 0; i < arr.Length - 1; i += 2)
{
    myDict.Add(arr[i], arr[i + 1]);
}

//myDict -> { { "John", "A" },{"Luke","B"} }
您可以这样说(在Linq的情况下,我们可以利用
Enumerable.Range
作为循环):

结果:

[John, A]
[Luke, B]

您可以按索引除以2进行分组。请尝试以下代码:

string[] arr = new string[4];
arr[0] = "John";
arr[1] = "A";
arr[2] = "Luke";
arr[3] = "B";

var dict = arr.Select((s, i) => new {s, i})
    .GroupBy(x => x.i / 2)
    .ToDictionary(g => g.First().s, g => g.Last().s);

您是否检查了字典的语法?你需要先把名字和字母结合起来。在那之后,简单的答案是你不能。您必须创建一个对象或类似于
{Name=“John”,something=“A”}
的东西,然后在这些元素的数组上使用
ToDictionary()
,例如:
arr.ToDictionary(A=>A.Name,A=>A.something)
[John, A]
[Luke, B]
string[] arr = new string[4];
arr[0] = "John";
arr[1] = "A";
arr[2] = "Luke";
arr[3] = "B";

var dict = arr.Select((s, i) => new {s, i})
    .GroupBy(x => x.i / 2)
    .ToDictionary(g => g.First().s, g => g.Last().s);