C# 从字典值到IEnumerable的Concat列表
我有一个C# 从字典值到IEnumerable的Concat列表,c#,.net,linq,dictionary,C#,.net,Linq,Dictionary,我有一个字典,希望得到一个IEnumerable,它允许我迭代dict中所有列表的所有元素。这当然应该避免处理所有元素和其他性能代价高昂的操作 我对Linq的做法不太正确: IEnumerable<T> enumerable = dict.SelectMany(list).Foreach(list.ConcatAll()).ToEnum(); IEnumerable enumerable=dict.SelectMany(list.Foreach(list.ConcatAll()).
字典
,希望得到一个IEnumerable
,它允许我迭代dict中所有列表的所有元素。这当然应该避免处理所有元素和其他性能代价高昂的操作
我对Linq的做法不太正确:
IEnumerable<T> enumerable = dict.SelectMany(list).Foreach(list.ConcatAll()).ToEnum();
IEnumerable enumerable=dict.SelectMany(list.Foreach(list.ConcatAll()).ToEnum();
如果
Linq
不是最佳方式,请建议其他选项。尝试使用以下代码
var enumerable=dict.Values.SelectMany(v=>v);
您正在访问字典集合,然后使用方法将每个值投影为List
,并展平到结果枚举
您的代码不起作用,因为
SelectMany()
接受Func
作为集合选择器,也不需要使用Foreach
方法ToEnum()
方法用法在这里也是无效的,它属于Enum
类型和几乎所有系统。Linq
方法已经接受或返回IEnumerable
请告诉我+1以便更好地解释当我迭代这个结果枚举时,它会迭代列表还是列表的元素?@Mechandrius它应该迭代elements@Mechandrius它将迭代列表中的元素<代码>选择多个将每个列表中的元素投影到一个结果枚举OK,这是正确答案。请原谅我问了这么简单的问题。