linq, сгруппировать и посчитать - PullRequest
1 голос
/ 10 сентября 2011

У меня есть список союзов с несколькими участниками и еще одна таблица с обращениями к страницам по союзам.Нужен отчет, в котором перечислены все объединения, количество членов каждого типа и клики (просмотры страниц).

клики находятся на отдельной таблице с датой и unionID

это близко, нона самом деле не имеют результатов, которые я хочу.Количество показывает общее количество участников, но не общее количество кликов.Как я могу получить общее количество кликов?(количество записей в таблице кликов, которые соответствуют UnionID)

(from c in db.view_Members_Details
 join h in db.tbl_Clicks on c.unionID equals h.unionID 
 group c by new { c.UnionName, h.unionID } into g
 select new
 {
     TotalClicks = g.Count(),
     UnionName = g.Key.UnionName,
     userTypeID1 = g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(1)).Count(),
     userTypeID2= g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(2)).Count(),
     userTypeID3= g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(3)).Count(),
 }).ToList();

результаты должны быть:

Clicks Count |  Union Name | userTypeID1 Count  | userTypeID2 Count  | userTypeID3 Count |

1 Ответ

0 голосов
/ 10 сентября 2011

Я не думаю, что вам нужно первое условие в вашем WHERE, потому что вы уже группируете по UnionName.

g.Count(x => x.userTypeID == 3) //etc for 1, 2, 3

Что касается кликов, попробуйте следующее:

TotalClicks = g.Count(x => x.unionID == g.Key.unionID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...