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 とは関係ありませんでした。各アイテムでゲッターとセッターを使用できるように、クラスのリストを用意することをお勧めします。
「なぜC#を使わないのか」という避けられないコメントの前に追加する必要があります。明らかに C# を使用できますが、F# でアルゴリズムを記述する可能性を探っています。そのためには、SQL Server から生データを取得する必要があります。