【问题标题】:Using LINQ to SQL group, sum and aggreate all together使用 LINQ to SQL 组、求和和聚合在一起
【发布时间】:2010-08-18 17:27:24
【问题描述】:

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

学生样本数据:

学生 ID、名字、姓氏

  • 187,约翰,马斯洛
  • 196 , 水晶 , 兜帽
  • 195,莎拉,刘易斯

折纸样本数据:

OrigamiId、StudentId、CreationDate、NumberOfOrigami

  • 1 , 187 , 5/17/2010 1:06:55 PM , 1
  • 2 , 196 , 5/22/2010 1:31:28 PM , 2
  • 3 , 187 , 6/18/2010 1:51:40 PM , 2
  • 4 , 187 , 6/19/2010 2:13:35 PM , 1
  • 5 , 196 , 7/17/2010 2:19:44 PM , 3
  • 6 , 196 , 7/19/2010 2:23:02 PM , 2
  • 7 , 195 , 7/20/2010 3:04:15 PM , 3

还有更多类似这种格式的记录。

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

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

谢谢。

更新一个

    Dim query = From st In db.Students _
                 Join or In db.Origami On or.StudentId Equals st.StudentId _
                 Group By or.StudentId Into TotalOrigami = Sum(or.NumberOfOrigami) _
                 Select StudentId, TotalOrigami

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

【问题讨论】:

  • 请参阅我的更新一。我包含了到目前为止我尝试过的查询。

标签: c# vb.net linq linq-to-sql aggregate-functions


【解决方案1】:

可以在折纸对象上创建一个仅包含月/年的额外属性。然后使用下面的查询

            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# 编写的,但我希望你能通过。

【讨论】:

【解决方案2】:

这是有效的查询:

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  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多