2014-02-19 6 views
-1

나는 다음과 같은 필드가 나는 특정 SiteID로 하루 나에게 레코드의 수를 반환 LINQ와 쿼리를 작성하려는 선택하여 GROUPBY

ID 
fk_siteID 
VisitDate 

있는 테이블을 가지고있다. 예를 들어 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(); 

그 결과,이 기록이 내 테이블에있을 때 이 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