【发布时间】:2010-06-21 13:26:50
【问题描述】:
我刚刚开始学习 F#。我昨晚写了这个 F#/ADO.NET 代码。 您将通过哪些方式改进语法 - 让它感觉像惯用的 F#?
let cn = new OleDbConnection(cnstr)
let sql = "SELECT * FROM People"
let da = new OleDbDataAdapter(new OleDbCommand(sql, cn))
let ds = new DataSet()
cn.Open()
let i = da.Fill(ds)
let rowCol = ds.Tables.[0].Rows
let rowCount = rowCol.Count
printfn "%A" rowCount
for i in 0 .. (rowCount - 1) do
let row:DataRow = rowCol.[i]
printfn "%A" row.["LastName"]
注意: 我确实发现语法检查器不喜欢 rowCol.[i].["LastName"] 处理双索引器的正确方法是什么?我不得不将代码分成两行。
另外如果我没有走 DataSet 路线并使用 SqlDataReader 将其数据加载到 F# 记录中。我应该使用什么集合结构来包含记录? 标准 .NET 列表?
【问题讨论】:
-
不确定我是否理解这个问题。
-
他的意思是手头的任务(使用 .NET 库进行 DB 操作)必然以命令式代码结束,因此 F# 并不适用。但是,一旦您将数据从数据库中取出,它可能非常适合处理数据。
-
@tyndall Mau 是 100% 正确的。您的代码是 100% 必要的。您可以使用 FindReplace 将其转换为 C#。我认为 F# 可能不是这里最好的工具。
-
@Andrey:这里的 F# 与 C#完全相同。问题是,如果你想稍后编写一些优雅的 F# 代码,你需要先获取数据:-)。
-
我正在尝试获取数据,然后利用 F# 的优势。但想避免用 C# 和 F# 编写应用程序。
标签: .net ado.net f# functional-programming