F# F查询表达式/选择运算符/更改结果中的列标题
在以下代码中:F# F查询表达式/选择运算符/更改结果中的列标题,f#,f#-3.0,F#,F# 3.0,在以下代码中: #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
#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…)的更好方法是什么
注:对于网格函数,请参阅Tomas Petricek回复
问候,,
IP您可以选择数据作为记录,让DataGridView推断列的名称
type Status =
{
StatusID: int
Name: string
}
let query1 =
query {
for row in db.Status do
select { StatusID = row.StatusID; Name = row.Name }
}
现在在使用新特性的F4.6中,这应该更好一些
请注意在花括号的内侧使用了|字符。这就是F中常规记录与匿名记录的区别。还请注意,属性名称StatusID和Name必须在当前表单中冗余指定。尽管这类似于在JavaScript中构造对象的工作方式,.NET开发人员一直通过C匿名类型享受着更简洁的语法。建议在未来的语言规范中使用允许类似的功能作为后续更改。我认为他对一种从源代码中自动获取名称的方法感兴趣。是的,这是正确的。然而,根据要求,这可能是备选方案之一。谢谢你们两位。干杯
let query1 =
query {
for row in db.Status do
//select row
select {| StatusID = row.StatusID; Name = row.Name; |}
}