Mesclar várias listas de dados por ID comum em F #

Eu tenho várias listas de dados de 4 fontes diferentes com um conjunto comum de IDs que eu gostaria de mesclar, com base no ID, basicamente terminando com uma nova lista, uma para cada ID e uma única entrada para cada fonte.

Os objetos na lista de saída de cada uma das 4 fontes se parecem com isso:

type data = {ID : int; value : decimal;}

então, por exemplo, eu teria:

let sourceA = [data1, data2, data3];
let sourceB = [data1, data2, data3];
let sourceC = [data1, data2, data3];
let sourceD = [data1, data2, data3];

(Eu sei que esse código não é válido, apenas tentando dar uma idéia básica ... as listas são realmente puxadas e geradas a partir de um banco de dados)

Eu gostaria de pegar sourceA, sourceB, sourceC e sourceD e processá-los em uma lista contendo objetos algo como isto:

type dataByID = {ID : int; valueA : decimal; valueB : decimal; valueC : decimal; valueD : decimal; }

... para que eu possa imprimi-los em um CSV, com a primeira coluna sendo o ID e os coulmns 2 - 5 sendo dados das fontes A - D correspondentes ao ID nessa linha.

Sou totalmente novo em F #, então qual seria a melhor maneira de processar esses dados para que eu corresponda todos os valores dos dados de origem por ID?

questionAnswers(1)

yourAnswerToTheQuestion