我有一个包含以下字段的表
ID
fk_siteID
VisitDate
我想用LINQ编写一个查询,该查询返回一天中具有特定SiteID
的记录数。例如,如果siteid=1
显示我
12.1.2014 6
13.1.204 8
我写了这个查询
var n = from a in db.CompanyWebsiteUsers
group a by EntityFunctions.TruncateTime(a.VisitDate) into g
orderby g.FirstOrDefault().VisitDate
where g.FirstOrDefault().fk_siteID == WebsiteID
select new
{
key = g.Key,
dayofweek = SqlFunctions.DateName("weekday", g.Key),
count = g.Count()
};
grdDailyRes.DataSource = n;
grdDailyRes.DataBind();
显示此查询的结果:
当我的表中有2条记录时,这些记录的VisitDate
字段与siteid=1
和第二siteid=2
中的一条相同。
如果websiteid
为1或2,则此查询首先计算。
答案 0 :(得分:1)
您只检查组中的第一项,但您还必须检查其他项目。最简单的解决方案是移动where语句,即
var n = from a in db.CompanyWebsiteUsers
where a.fk_siteID == WebsiteID
group a by EntityFunctions.TruncateTime(a.VisitDate) into g
orderby g.FirstOrDefault().VisitDate
select new