gpt4 book ai didi

C# - 使用 LINQ 将带重复项的分隔字符串数组转换为字典

转载 作者:行者123 更新时间:2023-11-30 13:54:10 34 4
gpt4 key购买 nike

给定

string[] array = new string[]
{
"Sample1:foo",
"Sample2:bar",
"Sample1:foo1"
}

我知道我可以通过这种方式将它转换为字典:

Dictionary<string, string> whatever = new Dictionary<string, string>
foreach (string s in array) do...
string sampleNumber = s.Substring(0, indexOfColon);
string fooOrBar= s.Substring(indexOfColon + 1);
whatever[sampleNumber] = fooOrBar;

这将防止在添加重复键时抛出聚合异常(尽管覆盖键,在这种情况下很好)。我可以用 LINQ 做到这一点吗?我正在尝试以下方法:

Dictionary<string, string> whatever = array.ToDictionary(
key => key.Split(':')[0], value => value.Split(':')[1]);

有没有办法在不事先创建查找的情况下执行此操作?

最佳答案

试试这个:

Dictionary<string, string> whatever =
array
.Reverse()
.GroupBy(key => key.Split(':')[0])
.SelectMany(x => x.Take(1))
.ToDictionary(key => key.Split(':')[0], value => value.Split(':')[1]);

它给出:

whatever

或者你可以这样做:

Dictionary<string, string> whatever =
array
.Aggregate(
new Dictionary<string, string>(),
(d, v) => { d[v.Split(':')[0]] = v.Split(':')[1]; return d; });

同样的结果。

关于C# - 使用 LINQ 将带重复项的分隔字符串数组转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290995/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com