2016-07-05 81 views
3

我正在调用返回类型为Dictionary<string, List<string>>的方法。如何使用LINQ减少<string,列出<string>>为<string,string>?

我打电话给我的方式我期待List<string>始终只有1个字符串元素。为了简化这个我想使用Linq将返回类型转换为Dictionary<string, string>

我得到尽可能使用.ToDictionary(x => x.Key, x=> x.Value);但我很难得到如何获得正确的值。像LINQ这样的转换是可能的吗?

+0

难道你不能修改返回字典的方法,以便它返回'Dictionary '? –

+0

这是我不能轻易修改的另一个程序中的一种方法。 – drouning

回答

7

尝试:

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

你的字典的值是一个List<string>,所以你可以使用IEnumerable<T>扩展方法。现在有几个选项可以获得第一个元素。看看这个article了解更多详情

+0

可能很好解释使用'FirstOrDefault'和'SingleOrDefault'之间的差异 –

+1

我建议使用'.First'而不是'.FirstOrDefault'。由于OP总是期望得到一个结果,如果没有结果,它可能会更好地抛出错误。 –

+2

@BradleyUffner如果他们总是期待一个,那么应该使用'Single'。 –

相关问题