linq-to-sql - F# 3.0 LINQ groupBy 示例错误

标签 linq-to-sql f#

我正在使用 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/

相关文章:

f# - 在可移植类库中使用 F# JsonProvider 失败

dictionary - F# 选项字典

f# - 为什么此 f# 代码无法编译?

linq-to-sql - 如何映射 LINQ To SQL 以启用预加载,返回 EntitySet 或 ICollection?

asp.net-mvc - 如何使用 LinqToSQL 实现对 ASP.NET MVC 2 中的数据注释验证功能的自定义控制?

c# - 如何在 LINQ 中使用 OUT 参数

f# - 如何使用 Fsharp 中的 GetEnumerator 从 seq 中获取 seq?

f# - F#最近有哪些变化?

.net - 如何计算满足和不满足条件的记录数量

c# - 我可以在单个 Linq-to-SQL 语句中执行多个 ".Contains"测试吗?