Фильтровать последовательность типов записей по свойству
У меня есть упорядоченная последовательность следующего типа:
type Comparison<'a when 'a :> IKey > = {Id: string; src: 'a; dest: 'a}
То, что я хотел бы сделать, это когда есть несколько записей с одинаковыми Id
принимать только последнюю запись в последовательности для каждого идентификатора (последовательность была сгенерирована из упорядоченных результатов запроса), а также записи, в которых идентификатор не используется совместно с другими записями.
Есть ли в F# метод для генерации новой последовательности таким образом?
1 ответ
Решение
Как насчет:
items
|> Seq.groupBy (fun x -> x.Id)
|> Seq.map (snd >> Seq.last)
Это группирует элементы в последовательность кортежей, где первый элемент - это идентификатор, а второй - последовательность элементов с этим идентификатором.
Затем карта применяет Seq.last ко вторым элементам этих кортежей.