Linq to sql 需要一些groupby Linq2Sql帮助吗

Linq to sql 需要一些groupby Linq2Sql帮助吗,linq-to-sql,Linq To Sql,我需要按天、周、月和年显示我们所有产品的销售历史。这些数据将被发送到GoogleCharts API,以显示结果的折线图 因此,如果我有一个名为Products的表,它看起来像:- 产品 用户要求查看ProductID 1的历史记录。我怎样才能找回这个? eg输出 图1(日期与销售数量) 图2(周数与销售额) 图3(月份与销售数量) 我不确定“白天”是否可以完成。。。或者任何一种 干杯:) 更新1:部分工作正常。。。 花了一点时间后,我让第一个开始工作。。。但在另外两个问题上仍然需要帮助,并使其

我需要按天、周、月和年显示我们所有
产品的销售历史。这些数据将被发送到GoogleCharts API,以显示结果的折线图

因此,如果我有一个名为
Products
的表,它看起来像:-

产品 用户要求查看ProductID 1的历史记录。我怎样才能找回这个? eg输出

图1(日期与销售数量) 图2(周数与销售额) 图3(月份与销售数量) 我不确定“白天”是否可以完成。。。或者任何一种

干杯:)

更新1:部分工作正常。。。 花了一点时间后,我让第一个开始工作。。。但在另外两个问题上仍然需要帮助,并使其成为一个查询的一部分

from p in Products
where p.ProductId == 69
group p.DateCreated by p.DateCreated.Date into grouping
orderby grouping.Key
select new { Date = grouping.Key, Count = grouping.Count() }

我不知道如何使用LINQ表达式,但可以使用PIVOT操作符编写存储过程。看

如果不进行测试,我想这可能对你有用

每年这样做:

var data = from p in ctx.Products
           where p.ProductID == *productId*
           group p by n.CreateDate.Year into gn
           select new {
            Count = from a in gn
                 group a by a.CreateDate.DayOfYear into aa
                 select new { Count = aa.Count(), Key = new DateTime(gn.Key , 1, 1).AddDays(aa.Key) }
           };

(很抱歉变量名为:p)

使用DateTime.Date、DateTime.Month和DateTime.Year。然而,LINQtoSQL中存在一个缺陷,有时会将这些缺陷转换为无效的SQL。作为一种解决方法,您可以按照SqlMethods.DateDiffDay、SqlMethods.DateDiffMonth和SqlMethods.DateDiffYear(从1980-01-01开始)进行分组


这周的部分不那么容易。本周的开始取决于Sql Server设置,因此不可靠。或者,您可以使用SqlMethods.DateDiffDay,从案例中开始一周的某个日期开始,并将日差除以7。如果您需要给定年份中的周数,您应该计算与最近一周开始日期的日差,该日差小于或等于一年的开始日期。

+1类似的方法应该有效。不应该是。DayOfWeek(我认为linq2sql无论如何都不会翻译),OP可能需要考虑如何在没有时间的情况下获得日期。我会按日期抓取,然后用linq进一步处理,但在内存中(周、月、年)。这是一周中任何一天售出的所有产品的计数。星期天=23。我每天都在追求。这是因为,当我绘制这个图时,x轴是日期,y轴是计数。试试DayOfYear属性,你应该可以将它转换回DayOfWeek,你可能需要一个额外的组,然后我不认为我可以做DayOfYear,同样,因为这会按年份对同一天进行分组。2008年第1天售出5台,2009年第1天售出2台==1--7(作为第一排的结果)。第二排现在好一些了。。除此之外,每年都有一份清单。他们能加入吗?
Week 49 2008: 21
Week 50 2008: 11
Week 51 2008: 45
Week 52 2008: 0
Dec 08: 102
Jan 09: 23
from p in Products
where p.ProductId == 69
group p.DateCreated by p.DateCreated.Date into grouping
orderby grouping.Key
select new { Date = grouping.Key, Count = grouping.Count() }
var data = from p in ctx.Products
           where p.ProductID == *productId*
           group p by p.DateCreated.DayOfWeek into groupedProducts
           select new { DayOfWeek = groupedProducts.Key, Count = groupedProcuts.Count() };
var data = from p in ctx.Products
           where p.ProductID == *productId*
           group p by n.CreateDate.Year into gn
           select new {
            Count = from a in gn
                 group a by a.CreateDate.DayOfYear into aa
                 select new { Count = aa.Count(), Key = new DateTime(gn.Key , 1, 1).AddDays(aa.Key) }
           };