给定一个函数f:ValueA -> ValueB
,我如何将 IGrouping 类型映射IGrouping<Key, ValueA>
到IGrouping<Key, ValueB>
?
问题实例:
假设你有这种类型:
TaggedItem = { Tag:Tag ; Item:Item }
这个查询:
query {
for i in taggedItems
groupBy i.Tag into g
select g
}
这会给你一个类型的 seq: IGrouping<Tag, TaggedItem>
,但我真的想要一个类型的 seq: IGrouping<Tag, Item>
。映射函数为:fun taggedItem -> taggedItem.Item
解决方案
解决方案是避免分组映射,而是在进行分组时使用 groupValBy 进行转换,正如所选答案所指出的那样。如果您坚持,所选答案还显示了如何进行从一种类型的分组到另一种类型的映射。
query {
for i in taggedItems
groupValBy i.Tag i.Item into g
select g
}