[英]Assign indexes to read CSV rows in F# query
將索引添加到使用CsvProvider
和query
表達式讀入的 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.