【发布时间】:2012-01-29 17:50:27
【问题描述】:
我正在使用 F# 3.0 学习 LINQ。尝试通过此 URL 中的“查询表达式 (F#)”来遵循示例:http://msdn.microsoft.com/en-us/library/hh225374%28v=vs.110%29.aspx
我在 SQL Server 2008 R2 中创建了一个简单的数据表,数据库名为 myDatabase。 如示例所示创建一个简单的数据表:
创建表 [dbo].[学生] ( [学生 ID] INT NOT NULL, [名称] NVARCHAR (50) 非空, [年龄] INT NULL, 主键集群([StudentID] ASC) );
然后添加几行:
插入学生(学生 ID、姓名、年龄) 值(1,“阿伯克龙比,金”,10); 插入学生(学生 ID、姓名、年龄) 值(2,'Abolrous,Hazen',14); 插入学生(学生 ID、姓名、年龄) 值(3,“汉斯,吉姆”,12); 插入学生(学生 ID、姓名、年龄) 值(4,“亚当斯,特里”,12); 插入学生(学生 ID、姓名、年龄) 值(5,'汉森,克劳斯',11);
尝试理解示例中的 groupBy 是什么,以下是我的代码:
#light
open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq
[<Generate>]
type dbSchema = SqlDataConnection<"Data Source=.;Initial Catalog=myDatabase;Integrated Security=True">
let db = dbSchema.GetDataContext()
let groupX =
query {
for student in db.Student do
groupBy student.Age into g
select (g.Key, g.Count())
}
但是,我得到了编译器错误: 错误 字段、构造函数或成员 'Count' 未定义
我认为 Count() 是一个内置函数,但它不是。 告诉我如何使用示例代码。或者,如果这是一个错误,请告诉我代码可以完成这项工作。 顺便说一句,我相信另一个样本: groupValBy 也有同样的问题。 该网站的代码示例是:
query {
for student in db.Student do
groupValBy student.Name student.Age into g
select (g, g.Key, g.Count())
}
如果我错过了什么或想错了,请告诉我。 谢谢, 约翰
【问题讨论】:
标签: linq-to-sql f#