2014-02-19 4 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 
Смежные вопросы