2013-06-19 44 views
1

我查詢一個EF實體MatchHistory:集團LINQ和返回爲

public partial class MatchHistory 
    { 
     public System.Guid ApplicantId { get; set; } 
     public int BuyerId { get; set; } 
     public System.DateTime AppliedOn { get; set; } 
     public int MatchResultId { get; set; } 
     public System.DateTime ReapplyOn { get; set; } 

     public virtual MatchBuyer MatchBuyer { get; set; } 
    } 

目前,我有我的代碼這個LINQ聲明。

  return r.Find() 
       .Where(x => x.AppliedOn > cutoff && x.MatchResultId == (int)MatchResult.Accepted) 
       .ToList(); 

這將返回符合條件的MatchHistory類型的所有行。

但是,我想要做的是按BuyerId分組並返回由BuyerId計數。

這裏的課,我想輸出:

public class QuotaCount 
{ 
    public int BuyerId { get; set; } 
    public int Count { get; set; } 
} 

還沒有完全成功地得到正確的語法在一起,但 - 知道的任何建議。

回答

2
return r.Find() 
     .Where(x => x.AppliedOn > cutoff && x.MatchResultId == (int)MatchResult.Accepted) 
     .GroupBy(x => x.BuyerId) 
     .Select(x => new QuotaCount { BuyerId = x.Key, Count = x.Count() }) 
     .ToList(); 
1
return r.Find() 
       .Where(x => x.AppliedOn > cutoff && x.MatchResultId == (int)MatchResult.Accepted) 
       .GroupBy(mh=>mh.BuyerId).Select(gr=>new QuotaCount{BuyerId=gr.Key,Count=gr.Count});