2013-08-22 3 views
1

У меня есть следующий запрос:Как получить агрегированные значения из запроса linq?

from spl in SpeciesLists 
     join ar in Areas on spl.Station.Area equals ar.Id 
     join ground in Grounds on ar.Ground equals ground.Id 
     join re in Regions on ground.Region equals re.Id 
     where spl.Station.Trip.year ==2013 
     select new 
      { 
       SpciesCommonName = slp.Description, 
       Are = ar.description, 
       Ground = ground.Code, 
       NumberOfTripsInProtectedAreas = "To be calculated", 
      } 

«поездка» А может включать в себя одну или несколько станций. Поле защищенной области находится в таблице Trip и может быть 1 или 0. Станция имеет один или несколько видов.

Как рассчитать количество поездок в охраняемых районах?

Большое спасибо заранее

+0

Ваш список выбора содержит «SLP .Описание ", что означает, что ваш результат будет содержать список видов, а не список Trips! Если вы хотите объединиться для поездок, я считаю, что ваши результаты должны быть разными. Не могли бы вы прояснить это? –

+0

Правильно, но это потому, что мне нужно сгруппировать результат по выбранному columsn. Я знаю, что это было опущено в psot. –

+0

Итак, вы хотите, чтобы агрегированное значение находилось в трех столбцах? –

ответ

1

Вам нужно добавить условие ProtectedArea == 1 в вашем где положение.

Кроме того, как указано в комментариях, группа будет по: slp.Description, ar.description и ground.Code

Вот код:

from spl in SpeciesLists 
      join ar in Areas on spl.Station.Area equals ar.Id 
      join ground in Grounds on ar.Ground equals ground.Id 
      join re in Regions on ground.Region equals re.Id 
      where spl.Station.Trip.year ==2013 
      && spl.Station.Trip.ProtectedArea == 1 
      group spl by new { slp.Description, ar.description, ground.Code } into Result 
      select new 
       { 
        SpciesCommonName = Result.Key.Description, 
        Are = Result.Key.description, 
        Ground = Result.Key.Code, 
        NumberOfTripsInProtectedAreas = Result.Count() 
       } 
+0

Привет, Адель, Это выглядит чрезвычайно элегантно. Я его реализую и дам вам знать, разрешила ли я мою проблему. большое спасибо за усилия. –

Смежные вопросы