F# - 我可以将 Seq.map 应用于 System.DataSet.DataTableCollection 吗?
F# - can I apply Seq.map to System.DataSet.DataTableCollection?
这里有一些看起来应该起作用但不起作用的东西:
let dataSet = new DataSet()
let dataTable1 = dataSet.Tables.Add("Bob")
let dataTable1 = dataSet.Tables.Add("Bilf")
let tableNames = Seq.map (fun (x:DataTable) -> x.TableName) dataSet.Tables
它给出了以下错误:
The type 'DataTableCollection' is not compatible with the type 'seq<DataTable>'
尝试手动投射时仍然存在相同的错误:
let tableNames = Seq.map (fun (x:DataTable) -> x.TableName) (seq<DataTable> dataSet.Tables)
是否有任何方法可以对 DataTableCollection 执行 F# 样式的序列操作,或者是否需要先手动将 DataTableCollection 转换为 F# 认可的集合类型?
您正在寻找 Seq.cast
,它正是您所寻找的 - 从 IEnumerable
转换为 IEnumerable<'t>
dataSet.Tables
|> Seq.cast<DataTable>
|> Seq.map (fun x -> x.TableName)
这里有一些看起来应该起作用但不起作用的东西:
let dataSet = new DataSet()
let dataTable1 = dataSet.Tables.Add("Bob")
let dataTable1 = dataSet.Tables.Add("Bilf")
let tableNames = Seq.map (fun (x:DataTable) -> x.TableName) dataSet.Tables
它给出了以下错误:
The type 'DataTableCollection' is not compatible with the type 'seq<DataTable>'
尝试手动投射时仍然存在相同的错误:
let tableNames = Seq.map (fun (x:DataTable) -> x.TableName) (seq<DataTable> dataSet.Tables)
是否有任何方法可以对 DataTableCollection 执行 F# 样式的序列操作,或者是否需要先手动将 DataTableCollection 转换为 F# 认可的集合类型?
您正在寻找 Seq.cast
,它正是您所寻找的 - 从 IEnumerable
转换为 IEnumerable<'t>
dataSet.Tables
|> Seq.cast<DataTable>
|> Seq.map (fun x -> x.TableName)