如何使用LINQ将<string,list<string>>减少为<string,string>?

3
我正在调用一个返回类型为Dictionary<string, List<string>>的方法。我希望这个List<string>总是只有一个字符串元素。为了简化这个过程,我想使用Linq将返回类型转换为Dictionary<string, string>
我已经学会了使用.ToDictionary(x => x.Key, x=> x.Value); ,但我不知道如何获取正确的值。是否可以用LINQ进行这样的转换呢?

你能否修改返回字典的方法,使其返回 Dictionary<string, string> 类型? - Camilo Terevinto
这是另一个程序中的一个方法,我无法轻易修改。 - drouning
1个回答

7

请尝试以下操作:

.ToDictionary(x => x.Key, x=> x.Value.FirstOrDefault());

您的字典的值是一个 List<string>,因此您可以使用 IEnumerable<T> 扩展方法。现在有几个选项可以获得第一个元素。请参阅此文章了解更多详细信息。

最好解释一下使用 FirstOrDefaultSingleOrDefault 的区别。 - Jamie Rees
1
我建议使用.First而不是.FirstOrDefault。由于OP似乎总是期望有一个结果,如果没有结果,最好抛出一个错误。 - Bradley Uffner
2
如果它们总是期望一个,那么应该使用 Single - Jamie Rees
@BradleyUffner 当然,这完全取决于原帖作者的要求。 - Camilo Terevinto
嗨@cFrozenDeath和@JameR,我使用FirstOrDefault留下了我的答案,因为OP没有指定如果有多个元素该怎么做。但是,正如你们在评论中讨论的那样,一切都取决于OP的要求,这就是为什么我建议阅读文章的原因。 - ocuenca
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接