#linq #linq-to-entities
#linq #linq-to-entities
Вопрос:
У меня есть класс EF «Call», в котором есть дата, номер телефона, имя вызывающего абонента и стоимость вызова.
Моя цель — сгруппировать вызовы по номеру телефона, просуммировать общую стоимость и получить результаты 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);
Ответ №1:
Вам также нужна группа для имени вызывающего абонента:
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);
Комментарии:
1. Большое спасибо за помощь! Так просто!