一个查询与groupby / count / select new

时间:2013-12-26 10:24:18

标签: c# linq linq-to-sql

我必须在c#中使用linq to sql进行查询。我可以在sql中处理它,但在linq中 sql结果不是我想要的结果。 所以有一个表格:

  • 一天,日期时间与日期和时间
  • 和一种id

我必须计算每个日期的ID,时间并不重要。结果如此 应该是这样的:

day: 2013-11-12 amountIDs: 4

人们对我说,我可以选择一个新的查询,在这个查询中我可以设置一天 并且可以计算ID,或者我白天制作一组。我读过类似的问题,但在我的情况下它不起作用。

有人能帮帮我吗?

我尝试使用下面的语句,但是日期必须分组,所以现在输出是foreach datetime,就像这样

day: 12.12.2013 12:00:00 amountIDs: 1
day: 12.12.2013 12:10:10 amountIDs: 1

在sql中我发表了这样的声明:

SELECT CONVERT(VARCHAR(20), data.dayandtime, 106) AS day, count(data.amountIds) as ids 
FROM data
WHERE ( data.dayandtime >= DATEADD(day, -28, getdate()) AND (data.type = 100) AND (data.isSomething = 0) )
GROUP BY CONVERT(VARCHAR(20), data.dayandtime, 106), data.isSomthing and it works.

我看到类似的情况,人们制作了一个:from-select-new xyz语句,而不是我查看它并试图将视图分组。喜欢这个

var query = data.GroupBy(g => g.day.Value).ToList();

1 个答案:

答案 0 :(得分:3)

 var qry = from data in dbContext   
           group data by data.day into dataGrpd
                  select new
                  {
                      day= dataGrpd.Key,
                      amountIDs= dataGrpd.Select(x => x.Id).Distinct().Count()
                  };

Check This