9 linq lambda igrouping ilookup
我有两个类型ILookup的变量.我想使用Union或Concat组合它们的值并将结果分配给相同类型的第三个变量.Union和Concat都返回IGrouping.将IGrouping转换为ILookup一定很简单,但我不能这样做!:-( IGrouping暴露了Key,所以我正在努力寻找Lookup的第二个参数....任何帮助都会非常多,非常感谢.
Jon*_*eet 10
我认为你需要首先压扁序列,使用ToLookup:
var lookup = first.Concat(second)
.SelectMany(group => group,
(group, item) => new { Key = group.Key,
Item = item })
.ToLookup(x => x.Key, x => x.Item);
Run Code Online (Sandbox Code Playgroud)
使用的形式,SelectMany这需要两位代表:一个项目在原来的序列转换到集合,并另取原始集合中的项目(即组)和项目返回集合中(即匹配的项目获取结果项目的那个组的关键.这是最简单的方法(我认为!)将分组展平为一系列带有键的项目.
以上未经过测试,因此可能完全错误.它的效率也相对较低......很遗憾没有办法Lookup直接构建实例.ILookup当然,你可以自己实现.