С учетом функции f:ValueA -> ValueB
, как я могу отобразить группировку типа IGrouping<Key, ValueA>
на IGrouping<Key, ValueB>
?Как сопоставить 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
}
По какой-либо причине вы не можете просто использовать отображение в исходном 'GroupBy'? –
Это тоже сработает, но я не смог найти пример. –
Ну, мы не можем дать вам пример легко, не имея * any * подскажите, что вы группируете. Если бы вы могли предоставить больше контекста, мы могли бы помочь больше. –