Как извлечь данные из итерации последовательности

csvData1 содержит данные в файле.csv. Я создал последовательность только из двух столбцов в электронной таблице ("GIC-ID", "COVERAGE DESCRIPTION")

let mappedSeq1 = 
   seq { for csvRow in csvData1 do yield (csvRow.[2], csvRow.[5]) }

Глядя в отладчик Visual Studio x оказывается System.Tuple<string,string>,

for x in mappedSeq1 do
    printfn "%A" x
    printfn "%A" x.ToString

Вот результат выполнения

for x in mappedSeq1

("GIC-ID", "COVERAGE DESCRIPTION")
<fun:main@28>

Мне трудно понять, как получить доступ xтак что я могу извлечь первый элемент.

2 ответа

Решение

Вы можете использовать сопоставление с образцом, чтобы деконструировать кортеж

for (a, b) in mappedSeq1 do
  // ...

или же

for x in mappedSeq1 do
  let a, b = x

В качестве альтернативы для 2-х кортежей вы можете использовать встроенную функцию fst а также snd

Использование Seq.map а также fst чтобы получить последовательность только первого компонента кортежа:

let firstOnly = mappedSeq |> Seq.map fst
Другие вопросы по тегам