gpt4 book ai didi

c# - 使用 LINQ 从分隔字符串列表构建字典

转载 作者:行者123 更新时间:2023-12-03 20:12:10 26 4
gpt4 key购买 nike

我有一个字符串列表,如下所示:

abc|key1|486997
def|key1|488979
ghi|key2|998788
gkl|key2|998778
olz|key1|045669

我如何使用 LINQ 和 ToDictionary 生成如下所示的 Dictionary<string, List<string>>

key1 : { abc|key1|486997, def|key1|488979, olz|key1|045669 }
key2 : { ghi|key2|998788, gkl|key2|998778 }

基本上我希望能够提取第二个元素作为键,使用 ToDictionary() 一次性创建字典。

我目前正在做这个..

 var d = new Dictionary<string, List<string>>();

foreach(var l in values)
{
var b = l.Split('|');
var k = b.ElementAtOrDefault(1);

if (!d.ContainsKey(k))
d.Add(k, new List<string>());

d[k].Add(l);
}

我看过有关从单个分隔值字符串构建字典的问题,但我想知道在从分隔字符串列表开始时是否有一种优雅的方法来执行此操作。

最佳答案

var list = new []
{
"abc|key1|486997",
"def|key1|488979",
"ghi|key2|998788",
"gkl|key2|998778",
"olz|key1|045669"
};

var dict = list.GroupBy(x => x.Split('|')[1])
.ToDictionary(x => x.Key, x => x.ToList());

您还可以一次性将其转换为查找(与 Dictionary<K,IEnumerable<V>> 非常相似):

var lookup = list.ToLookup(x => x.Split('|')[1]);

关于c# - 使用 LINQ 从分隔字符串列表构建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436767/

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