C# 如何使用LINQ将数组转换为字典
我有一个字符串数组,我想使用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>(
字典。
我希望具有偶数索引(包括零)的元素在字典中是键,而具有奇数索引的元素是值。我使用循环
创建了一个字典:
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);