2017-05-16 8 views
0

を数える:は、参加グループと私は、データベース内のこれらのテーブル持っている同じクエリで

TOTAL TABLE:

total_table_id | person_id | car_id | year 
----------------|-----------|-----------|------ 
0    | 1   | 4   | 2015 
1    | 1   | 2   | 2017 
2    | 2   | 0   | 2017 
3    | 3   | 3   | 2017 
4    | 3   | 4   | 2015 

PERSON表を:

person_id | name | age 
------------|-------|----- 
0   | John | 26 
1   | Anna | 41 
2   | Sam | 33 
3   | Tim | 33 

CAR表:

car_id | model | color 
--------|-------|------- 
0  | A  | red 
1  | B  | blue 
2  | B  | white 
3  | D  | red 
4  | C  | black 

そして私はドロップダウンリストで年を選択した後にしたいことは、このような何かを得るためにされています。これは、一瞬のために、私が持っているクエリです

color | age | cars_count 
--------|-------|------------ 
red  | 33 | 2 
white | 41 | 1 

from a in total 
join b in person 
on a.person_id equals b.person_id 
join c in car 
on a.car_id equals c.car_id 
select new 
{ 
    color = c.color, 
    age = b.age, 
    cars_count = ? // <--------This is what I don't know how to get it 
}).ToList(); 

ヒント?

答えて

1

あなたはgroup byステートメントを使用する必要があります

var answer = (from total in totalTable 
      where total.year == 2017 
      join car in carTable on total.car_id equals car.car_id 
      join person in personTable on total.person_id equals person.person_id 
      group person by car.color into sub 
      select new 
      { 
       color = sub.Key, 
       age = sub.Max(x => x.age), 
       //or age = sub.Min(x => x.age), 
       //or age = sub.First().age, 
       count = sub.Count() 
      }).ToList(); 
関連する問題