我有一个像这样的字典的用例
var foo = new Dictionary<string, List<string>>()
所以这个集合将保存一些像这样的分层数据
我需要得到\项目忽略键的值列表,因此结果将是
第一次尝试我想出了这个
IReadOnlyList<string> bar = foo.Select(r => r.Value.Select(x => x.ToString()))
.Select(r => r.ToString())
.ToList();
这有什么好处吗?
答案 0 :(得分:3)
使用SelectMany
:
foo.SelectMany(x => x.Value).ToList();
答案 1 :(得分:0)
请注意,Dictionary已经通过其Values属性提供了一种O(1)方式来访问其值列表(与您可以访问其键列表相同)
中的值的顺序 Dictionary.ValueCollection未指定,但它是 与相关键相同的顺序 Keys属性返回的Dictionary.KeyCollection。
返回的Dictionary.ValueCollection不是静态的 复制;相反,Dictionary.ValueCollection引用 回到原始字典中的值。 因此,对词典的更改仍然存在 反映在Dictionary.ValueCollection。
获取此属性的值是O(1)操作。
https://msdn.microsoft.com/en-us/library/ekcfxy3x(v=vs.110).aspx