我正在学习LINQ与F#3.0。尝试通过以下URL中的“查询表达式(F#)”示例:http://msdn.microsoft.com/en-us/library/hh225374%28v=vs.110%29.aspxF#3.0 LINQ groupBy样本错误
我在SQL Server 2008 R2中创建了一个简单的数据表,数据库名称为myDatabase。 创建作为所述样品中指示的一个简单的数据表:
CREATE TABLE [DBO] [学生]( [StudentID] INT NOT NULL, [名称] NVARCHAR(50)NOT NULL, [年龄] INT NULL, PRIMARY KEY CLUSTERED([StudentID] ASC) );
再加入几行:
INSERT INTO学生(StudentID,姓名,年龄) VALUES(1, '阿伯克龙比,金',10); INSERT INTO Student(StudentID,Name,Age) VALUES(2,'Abolrous,Hazen',14); INSERT INTO Student(StudentID,Name,Age) VALUES(3,'Hance,Jim',12); INSERT INTO Student(StudentID,Name,Age) VALUES(4,'Adams,Terry',12); INSERT INTO Student(StudentID,Name,Age) VALUES(5,'Hansen,Claus',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()是一个内置函数,但事实并非如此。 告诉我如何使用示例代码。或者,如果这是一个错误,请告诉我代码可以完成这项工作。顺便说一句,我相信另一个样本:groupValBy有同样的问题。 从网站的代码示例是:
query {
for student in db.Student do
groupValBy student.Name student.Age into g
select (g, g.Key, g.Count())
}
让我知道如果我错过了什么或误以为。 谢谢, 约翰
嗨,Wiktor:太好了!你的建议是正确的。但是,对于互联网上的示例代码,没有这样开放的System.Linq。所以,我猜不仅是我,还有很多其他人可能不知道这个! – 2012-01-29 21:09:21