2011-10-22 144 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