2014-02-19 52 views
-1

我有以下字段選擇和的GroupBy

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,則此查詢首先計數。

回答

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