簡體   English   中英

分配索引以讀取 F# 查詢中的 CSV 行

[英]Assign indexes to read CSV rows in F# query

將索引添加到使用CsvProviderquery表達式讀入的 CSV/TSV 文件的讀取內容的最簡單方法是什么?

我有一個制表符分隔的文件,其中包含數千個定期需要讀取的訂單,相關訂單是最近寫入某個數據庫的訂單。 訂單未編入索引且沒有時間戳,因此我必須交叉引用以查看哪些訂單尚未寫入數據庫。 我想對這些進行索引,以便我可以找到寫入數據庫的最新訂單,然后選擇包括之后的所有行(該文件由第 3 方按順序寫入,因此最新訂單將是最下方的行)文件),但到目前為止我沒有看到在單個查詢表達式中執行此操作的非常簡單的方法。

let data = new CsvProvider<fileLocation>()
let allOrders = query {
    for row in data.Rows do
    select row (*perhaps something like a "select (index, row)" here?*)
    (*how do I increment the index in the expression?*)
}

我將如何索引這些?

您可以使用Seq.indexed將序列data.Rows轉換為元組序列,其中第一個元素是從零開始的索引,第二個元素是行:

let allOrders = query {
    for index, row in Seq.indexed data.Rows do
    where (index < threshold)
    select row
}

有關Seq.indexed如何工作的說明:

> let xs = ["a"; "b"; "c"; "d"]
> Seq.indexed xs
val it : seq<int * string> = seq [(0, "a"); (1, "b"); (2, "c"); (3, "d")]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM