在以下代码中:
#r "System.Data.dll"
#r "FSharp.Data.TypeProviders.dll"
#r "System.Data.Linq.dll"
open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq
open System.Windows.Forms
type dbSchema = SqlDataConnection<"...">
let grid<'T> (x:seq<'T>) =...
let query1 =
query {
for row in db.Status do
//select row
select (row.StatusID, row.Name)
}
query1 |> Seq.toArray |> grid
有哪些更好的方法可以将列更改为有意义的标题(例如,来自数据源的实际列),而不仅仅是(Item1 Item2 ...)。
注意:对于网格功能,请see Tomas Petricek回复。
此致 IP
答案 0 :(得分:6)
您可以选择数据作为记录,让DataGridView
推断出列的名称
type Status =
{
StatusID: int
Name: string
}
let query1 =
query {
for row in db.Status do
select { StatusID = row.StatusID; Name = row.Name }
}
答案 1 :(得分:1)
使用新的Anonymous Record功能,现在在F#4.6中应该更好一些。
let query1 =
query {
for row in db.Status do
//select row
select {| StatusID = row.StatusID; Name = row.Name; |}
}
注意|的使用。大括号内部的字符。这就是现在将常规记录与F#中的匿名记录区分开的地方。另请注意,必须在当前表单中冗余地指定属性名称StatusID
和Name
。尽管这类似于在JavaScript中构造对象的方式,但是.NET开发人员一直在享受通过C#匿名类型使用的更为简短的语法。建议在将来的语言规范中进行后续更改,以允许使用类似的implicit property names功能。