2017-01-24 9 views
0

I以下のモデルがあります:標準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 

私が変換しようと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 - ありがとう!私はそれが何か単純だと思った。関数内のラムダを完全に忘れた –

+0

どのようなエラーメッセージが表示されましたか? –

答えて

0

おかげで、これは私が探していた答えでした。

1

Sumは、セレクタを取る:元の質問で奪うコメントへ

n.Sum(p => p.ContractHours)