我有一个Dictionary<int, list<T>>
,想要得到一个IEnumerable<T>
,它允许我迭代dict中所有列表的所有元素。这当然应该避免处理所有元素和其他性能昂贵的操作。
我对林克的方法,这不是很正确:
IEnumerable<T> enumerable = dict.SelectMany(list).Foreach(list.ConcatAll()).ToEnum();
如果Linq
不是最佳方式,请建议其他选项。
尝试使用以下代码
var enumerable = dict.Values.SelectMany(v => v);
您正在访问dictionary的Values
集合,然后使用SelectMany
方法将每个值投影为List<T>
,并展平为生成的枚举
您的代码不起作用,因为SelectMany()
接受Func
作为集合选择器,也不需要使用Foreach
方法。ToEnum()
方法的使用在这里也是无效的,它属于Enum
类型,几乎所有的System.Linq
方法都已经接受或返回IEnumerable<T>