从字典值到IEnumerable的Concat列表 - c#

我有一个Dictionary<int, list<T>>并想要一个IEnumerable<T>,它允许我遍历dict中所有列表的所有元素。当然,这应该避免应付所有要素和其他性能昂贵的操作。

我使用Linq的方法不太正确:

IEnumerable<T> enumerable = dict.SelectMany(list).Foreach(list.ConcatAll()).ToEnum();

如果Linq不是最佳方法,请提出其他选择。

参考方案

尝试使用以下代码

var enumerable = dict.Values.SelectMany(v => v);

您正在访问字典的Values集合,然后使用SelectMany方法将每个值投影为List<T>并展平为结果枚举

您的代码不起作用,因为SelectMany()接受Func作为集合选择器,也无需使用Foreach方法。 ToEnum()方法的用法在这里也不是有效的,它属于Enum类型,几乎所有System.Linq方法已经接受或返回IEnumerable<T>

Linq-在嵌套集合中查找元素 - c#

我有一个通用列表-SupportedTypeGroups。每个SupportedTypeGroup都有SupportedTypes属性(SupportedType的通用列表)。如何构造Linq查询以使用所需名称查找SupportedType? 参考方案 var result = SupportedTypeGroups .SelectMany(g => …

.Net LINQ-使用其他字典过滤字典 - c#

我有两个相同类型的字典,A和B。Dictionary<string, IEnumerable<object>> 我使用对象来表示具有属性“ Id”的复杂类型。我正在寻找A中具有B中存在的对象(使用Id)但在另一个键下的所有项目。基本上是要判断对象是否已移动键。 A是新字典,B是旧字典。有没有使用LINQ完成此操作的合理方法?我希望结果…

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5

LINQ RemoveAll代替循环 - c#

我有两个for循环,用于从列表中删除项目。我正在为这些循环寻找等效的LINQ语句for (Int32 i = points.Count - 1; i >= 0; i--) { for (Int32 j = touchingRects.Count - 1; j >= 0; j--) { if (touchingRects[j].HitTest(po…