LINQ количество в группе от объединения - PullRequest
4 голосов
/ 27 июня 2011

У меня есть утверждение LINQ, которое я пытаюсь сделать правильно, так что, возможно, все происходит неправильно. Моя цель - запросить таблицу и объединиться в другую таблицу, чтобы получить счет.

Места
ID, дисплей

ProfilePlaces
ID, PlaceID, Talk, Hear

В основном Places имеют ProfilePlaces в отношениях один ко многим. Я хочу получить число SUM из ProfilePlaces, которое имеет Talk и Hear. Talk и Hear являются полями bit.

Ниже приводится уникальный список Places, поэтому мне нужно добавить в счетчики Talk и Hear.

var counts = from p in db.Places
             join pp in db.ProfilePlaces on p.ID equals pp.PlaceID
             group new { Place = p } by p.Display;

Я думал, что-то вроде этого, но не повезло

var counts = from p in db.Places
             join pp in db.ProfilePlaces on p.ID equals pp.PlaceID
             group new { Place = p, 
                         Talk = pp.Count(t => t.Talk == true),
                         Hear = pp.Count(t => t.Hear == true) 
                       } by p.Display;

Спасибо за любую помощь.

1 Ответ

10 голосов
/ 27 июня 2011

Вы хотите выполнить ГРУППОВОЕ СОЕДИНЕНИЕ, чтобы получить количество для каждого Place.

var counts2 = from p in places
              join pp in profilePlaces on p.ID equals pp.PlaceID into g
              select new
              {
                   Place = p,
                   CountMeet = g.Count(a => a.Meet),
                   CountTalk = g.Count(a => a.Talk)
              };

Вот документация по различным соединениям из MSDN:
http://msdn.microsoft.com/en-us/library/bb311040.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...