Что будет linq эквивалентом db join с group by? - PullRequest
0 голосов
/ 30 апреля 2019

Что будет linq эквивалентом следующего запроса:

SELECT
   h.State,COUNT(p.NPRID)
   FROM PopulationRegistrationEntity p
   INNER JOIN HouseListingEntity h
   ON h.CensusHouseNoID = p.CensusHouseNoID
   GROUP BY h.State    

Я пробовал, но не работает:

var a = (from h in db.HouseListingEntity
                     join p in db.PopulationRegistrationEntity on h.CensusHouseNoID equals p.CensusHouseNoID
                     group p by new { h.State } into g
                     select new { State = g.Key.State, Count = g.Count(p1 => p1.NPRID > 0) });

1 Ответ

3 голосов
/ 30 апреля 2019

Группа h вместо p:

var a = (from h in db.HouseListingEntity
         join p in db.PopulationRegistrationEntity on h.CensusHouseNoID equals p.CensusHouseNoID
         group h by h.State into g
         select new { State = g.Key.State, Count = g.Count(p1 => p1.NPRID > 0) });

Отображение ошибки времени компиляции в последней строке кода в g.Key.State и p1.NPRID

Используйте предложение let:

var a = (from h in db.HouseListingEntity
         join p in db.PopulationRegistrationEntity on h.CensusHouseNoID equals p.CensusHouseNoID
         let temp = new { HouseListingEntity = h, PopulationRegistrationEntity = p }
         group temp by temp.HouseListingEntity.State into g
         select new { State = g.Key, Count = g.Count(p1 => p1.PopulationRegistrationEntity.NPRID > 0) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...