2011-10-22 2 views
0

날짜, 전화 번호, 발신자 이름 및 통화 비용이있는 EF "통화"클래스가 있습니다.Linq 그룹화 및 투영 쿼리

내 목표는 전화 번호로 전화를 그룹화하고 총 비용을 합산하고 가장 비싼 40 건의 전화를받는 것입니다. 이 모든 작업을 수행 할 수 있지만 프로젝션에 문제가 있습니다. 발신자 이름에 액세스하려면 어떻게해야합니까?

var query = 
(

from call in model.Calls 
group call by call.TelephoneNumber into g 
orderby g.Sum(gr => gr.ActualCost) descending 

select new 

{ 
TelephoneNumber = g.Key, 
CallerName = ??? 
Cost = (g.Sum(gr => gr.ActualCost)), 
TotalNumbers = g.Count(), 
} 

).Take(40); 

답변

0

는 또한 CallerName에 그룹을 필요

var query = 
    (from call in model.Calls 
    group call by new { call.TelephoneNumber, call.CallerName } into g 
    orderby g.Sum(gr => gr.ActualCost) descending 
    select new 
    { 
    TelephoneNumber = g.Key.TelephoneNumber, 
    CallerName = g.Key.CallerName, 
    Cost = (g.Sum(gr => gr.ActualCost)), 
    TotalNumbers = g.Count(), 
    }).Take(40); 
+0

이 도와 주셔서 너무 감사합니다! 너무 간단! – Trevor