2017-01-24 17 views
0

나는 다음과 같은 모델이 있습니다 표준 SQL을 사용하여C#을 GROUPBY와 Linq에 방법 및 선택

public class HeadCount 
{ 
    public int Id { get; set; } 
    public int ContractId { get; set; } 
    public string FiscalYear { get; set; } 
    public string TaskOrder { get; set; } 
    public decimal ContractHours { get; set; } 
    public int PersonId { get; set; } 
    public string CompanyName { get; set; } 
    public string UserId { get; set; } 
    public int ClinAssignId { get; set; } 
} 

, 나는 내가 SSMS에서 다음 스크립트를 실행 한 :

select personid, sum(contracthours) as hours from headcounts where personid != 0 group by personid 

I 변환하려고 stubbling 오전 이것은 LINQ menthod 호출에 대한 것입니다. 이것이 제가 시도한 것입니다 :

var results = _context.HeadCounts 
    .GroupBy(p => p.PersonId) 
    .Select(n => new {personid = n.Key, hours = n.Sum(ContractHours)}); 

합계에 ContractHours을 좋아하지 않습니다. 나는 시험해 보았다. n.ContractHours

내가 뭘 잘못하고 있니? 컬렉션이 원시적 숫자 모음이 아닌 경우

+3

'n.Sum (g => g.ContractHours) ' – Rob

+0

@Rob - 고마워! 나는 그것이 단순한 것이라고 생각했다. 함수 안의 lambdas를 완전히 잊었습니다. –

+0

어떤 오류 메시지가 나타 났습니까? –

답변

0

덕분에,이 내가 찾던 대답했다.

1

Sum는 선택을한다, 그래서 당신이 필요합니다 : 원래의 질문에 강탈 주석에

n.Sum(p => p.ContractHours)