我正在使用 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].[学生] ( [StudentID] INT 不为空, [名称] NVARCHAR (50) 不为空, [年龄] INT NULL, 主键集群([StudentID] ASC) );
然后添加几行:
插入学生(学生 ID、姓名、年龄) VALUES(1, 'Abercrombie, Kim', 10); 插入学生(学生 ID、姓名、年龄) VALUES(2, 'Abolrous, Hazen', 14); 插入学生(学生 ID、姓名、年龄) VALUES(3, 'Hance, Jim', 12); 插入学生(学生 ID、姓名、年龄) VALUES(4, '亚当斯, 特里', 12); 插入学生(学生 ID、姓名、年龄) VALUES(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())
}
如果我遗漏了什么或想法有误,请告诉我。 谢谢, 约翰
最佳答案
我猜你错过了
open System.Linq
Count()
是在那里定义的扩展方法。
关于linq-to-sql - F# 3.0 LINQ groupBy 示例错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055317/