在 C# 中,我使用 sql 脚本将数据添加到 List 中,其中 T 将是一个类,其字段/属性映射到 sql 脚本。
我怎么能在 F# 中做到这一点?这篇文章以标准方式使用存储过程。
using (conn)
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("dbo.query_here", conn))
{
cmd.CommandText = "dbo.query_here";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
cmd.Parameters.Add(new SqlParameter("@x1", Convert.ToString(x)));
cmd.Parameters.Add(new SqlParameter("@y1", y));
cmd.Parameters.Add(new SqlParameter("@z1", z));
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MyListOfClasses.Add(new MyDataClass(reader.GetInt32(reader.GetOrdinal("x"))
reader.GetDouble(reader.GetOrdinal("y")),
reader.GetDouble(reader.GetOrdinal("a")),
reader.GetDouble(reader.GetOrdinal("b"))));
}
reader.Close();
}
conn.Close();
我意识到 F# 可能并不像这样直接,但我需要以类似的方式将这些数据放入 F# 列表中。也更喜欢本质上不起作用的建议,并遵循与 C# 代码类似的模式。
在以前的线程中,有人建议使用记录,但这仍然与 SqlDataReader 无关。最好有一个类列表,这样我就可以在每个项目上使用 getter 和 setter。
我应该在“为什么不只使用 C#”的不可避免的评论之前添加。很明显我可以使用 C#,但我正在探索用 F# 编写算法的可能性,为此我需要从 SQL Server 获取我的原始数据。