2014-09-22 3 views
0

나는 사람들의 이름과 나이가있는 데이터베이스를 가지고있다. 이름으로 그룹화하고 기준과 일치하는 각 이름의 양을 가져 오는 쿼리가 있습니다. ListHelper 유형은 두 속성을 포함하는 클래스입니다.linq 카운트 결과의 합계를 얻는 방법

IEnumerable<ListHelper> HelperEnumerable = null 
HelperEnumerable = _repository.Persons 
     .Where(b => b.Age < 18) 
      .GroupBy(
        n => n.FirstName 
        , a => a.FirstName 
        , (key, count) => new ListHelper { Name = key, Amount = count.Count() } 
        ); 

나는 HelperEnumerable이 결과는 같다) (ToList 경우 : 이름 : "마이클", 금액 : 100, 이름 : "에바", 금액 : 122, 이름 : "리사", 금액 : 71, 는 등 내가 비슷한 결과를 얻을 수있는 방법

는하지만,이 같은 결과 기준과 일치하는 모든 사람의 카운트

: 이름 : "모든", 금액 : 17,280

내가 좋아하는 것은이합니다 키 값 쌍이므로 나머지 코드는 모두 동일하게 유지 될 수 있습니다. 쿼리는 특정 columm에 의해 그룹화되지 않고 모든 matchig 행의 수를 반환합니다.

난 단지 INT 수 반환이 시도했다 :

HelperEnumerable = _repository.Persons 
      .Where(b => b.Age < 18).Count(); 

을 내가 가지고 결과를 투영하려고) 백작 (후

.Select(a => (key,count) new ListHelper{ key = "All", count = a }) 

를 추가 할 수 없습니다 두 개의 필드.

답변

1

기능 :

IEnumerable<ListHelper> HelperEnumerable = null 
HelperEnumerable = _repository.Persons 
     .Where(b => b.Age < 18) 
      .GroupBy(
        n => "All" 
        , (key, count) => new ListHelper { Name = key, Amount = count.Count() } 
        ); 

당신이 할 필요가 그렇게하지?

또는 왜 그냥 :

new ListHelper{ key = "All", count = _repository.Persons.Where(b => b.Age < 18).Count() }; 

?

+0

감사합니다. @tolanj, 그게 내가해야 할 일을 정말로했습니다. 나는 그 명백한 해결책을 시도하지 않기에 너무 혼란 스러웠다 고 생각한다. :) – Lupa