Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ对SQL组进行求和和和聚合_C#_Vb.net_Linq_Linq To Sql_Aggregate Functions - Fatal编程技术网

C# 使用LINQ对SQL组进行求和和和聚合

C# 使用LINQ对SQL组进行求和和和聚合,c#,vb.net,linq,linq-to-sql,aggregate-functions,C#,Vb.net,Linq,Linq To Sql,Aggregate Functions,我有两张桌子,学生和折纸。折纸有外键的学生表。每个学生每个月可以做一张或多张折纸 学生样本数据: StudentId,FirstName,LastName 187,约翰,马斯洛 196,水晶,胡德 195,莎拉,刘易斯 折纸样本数据: 折纸ID、学生ID、创作日期、折纸编号 11987,5/17/2010 1:06:55下午1:00 2010年5月22日下午1:31:28 31876/18/2010下午1:51:40,2 40187,6/19/2010下午2:13:35,1 51967/1

我有两张桌子,学生和折纸。折纸有外键的学生表。每个学生每个月可以做一张或多张折纸

学生样本数据:

StudentId,FirstName,LastName

  • 187,约翰,马斯洛
  • 196,水晶,胡德
  • 195,莎拉,刘易斯
折纸样本数据:

折纸ID、学生ID、创作日期、折纸编号

  • 11987,5/17/2010 1:06:55下午1:00
  • 2010年5月22日下午1:31:28
  • 31876/18/2010下午1:51:40,2
  • 40187,6/19/2010下午2:13:35,1
  • 51967/17/2010下午2:19:44
  • 61967/19/2010下午2:23:02
  • 71952010年7月20日下午3:04:15
还有更多类似这种格式的记录

我想每月统计每个学生的折纸总数。如下所示:

  • 名称、2010年1月、2010年2月等
  • 约翰·马斯洛,2岁,3岁
  • 水晶风帽,4,5
  • 莎拉·刘易斯,6岁,5岁
谢谢

更新一个


这个查询只给出每个学生的折纸总数。但我要每个学生每月数一次折纸。欢迎提供任何建议。

可以创建一个额外的属性,该属性仅保存折纸对象上的月份/年份。然后使用下面的查询

            var q = from st in db.Students 
                    join or in db.Origami on or.StudentId equals st.StudentID
                    group st by new { st.StudentId, or.MonthYear } into g
                    select new { g.Key.StudentId, g.Key.MontYear, Total = g.Count() };

我刚才看到的示例是C#,但我希望您能理解。

可以创建一个额外的属性,该属性仅保存折纸对象上的月份/年份。然后使用下面的查询

            var q = from st in db.Students 
                    join or in db.Origami on or.StudentId equals st.StudentID
                    group st by new { st.StudentId, or.MonthYear } into g
                    select new { g.Key.StudentId, g.Key.MontYear, Total = g.Count() };
我刚刚看到这个例子是C语言的,但我希望你能理解。

这里是一个有效的查询:

Dim query = From st In db.Students _ 
                 Join ori In db.Origami On ori.StudentId Equals st.StudentId _ 
                 Group By key = New With {ori.Student, .MonthYear = (ori.CreationDate.Value.Month & "/" & tr.CreationDate.Value.Year)}  Into TotalOrigami = Sum(ori.NumberOfOrigami) _ 
                 Select key.Student.FirstName,key.Student.LastName,key.MonthYear,TotalOrigami  
以下是工作查询:

Dim query = From st In db.Students _ 
                 Join ori In db.Origami On ori.StudentId Equals st.StudentId _ 
                 Group By key = New With {ori.Student, .MonthYear = (ori.CreationDate.Value.Month & "/" & tr.CreationDate.Value.Year)}  Into TotalOrigami = Sum(ori.NumberOfOrigami) _ 
                 Select key.Student.FirstName,key.Student.LastName,key.MonthYear,TotalOrigami  

请看我的更新一。我包含了迄今为止尝试的查询。请查看我的更新。我包括了到目前为止我尝试过的查询。能给我你刚才看到的例子的链接吗?Thx.我自己用几篇文章和自己的一个测试项目创建了它。我用了这些文章:能给我你刚才看到的例子的链接吗?Thx.我自己用几篇文章和一个自己的测试项目创建了它。我使用了这些文章:和