Фильтровать последовательность типов записей по свойству

У меня есть упорядоченная последовательность следующего типа:

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 ко вторым элементам этих кортежей.

Другие вопросы по тегам