首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#将List<string>转换为Dictionary<string,string>

C#将List<string>转换为Dictionary<string,string>
EN

Stack Overflow用户
提问于 2012-07-20 22:11:06
回答 3查看 238.4K关注 0票数 149

这似乎是一件奇怪的事情,但忽略这一点,有没有一种很好的简明的方法将List<string>转换为Dictionary<string, string>,其中字典中的每个键值对就是列表中的每个字符串。即

代码语言:javascript
复制
List = string1, string2, string3
Dictionary = string1/string1, string2/string2, string3/string3

我已经做了大量的搜索,仅在Stackoverflow上就有几十个相反方向的例子,但不是这样的。

这样做的原因是我有两个第三部分组件,并且更改它们不是我所能控制的。一个返回一个电子邮件地址列表作为List<string>,另一个发送电子邮件,其中的To参数是一个Dictionary<string, string>。字典的关键字是电子邮件地址,值是他们的真实姓名。然而,我不知道真实姓名,但如果你也将真实姓名设置为电子邮件地址,它仍然有效。因此,我想要将列表转换为Dictionary<string, string>。有很多方法可以做到这一点。列表上的foreach循环,它将一个kvp添加到字典中。但我喜欢简洁的代码,并想知道是否有单行解决方案。

EN

回答 3

Stack Overflow用户

发布于 2012-07-20 22:12:07

使用以下命令:

代码语言:javascript
复制
var dict = list.ToDictionary(x => x);

有关详细信息,请参阅MSDN

正如Pranay在评论中指出的那样,如果一个项目在列表中多次出现,这将失败。

根据您的特定需求,您可以使用var dict = list.Distinct().ToDictionary(x => x);获取不同条目的字典,也可以使用ToLookup

代码语言:javascript
复制
var dict = list.ToLookup(x => x);

这将返回一个本质上与IDictionary<string, IEnumerable<string>>相同的ILookup<string, string>,因此您将拥有一个包含每个string实例的不同键的列表。

票数 15
EN

Stack Overflow用户

发布于 2012-07-20 22:13:04

通过使用ToDictionary

代码语言:javascript
复制
var dictionary = list.ToDictionary(s => s);

如果可以重复任何字符串,可以先在列表上调用Distinct (以删除重复项),或者使用允许每个键有多个值的ToLookup

票数 1
EN

Stack Overflow用户

发布于 2012-07-20 22:20:07

您可以使用:

代码语言:javascript
复制
var dictionary = myList.ToDictionary(x => x);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11581101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档