Ошибка выражения linq: невозможно отобразить столбец? - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь объединить мой запрос linq с другой таблицей. Как я могу отобразить имя в таблице клиентов? Я получаю сообщение об ошибке: не содержит определения для «Имя»?

   from p in Purchases 
join c in Customers on p.CustomerID equals c.ID
group p by p.Date.Year into SalesPerYear
select new {
customername= SalesPerYear.First().Name,
customerid= SalesPerYear.First().CustomerID,
totalsales= SalesPerYear.Sum(x=>x.Price)
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2011

SalesPerYear - это IGrouping.Вам необходимо получить доступ к Name, CustomerID и т. Д. Из свойства Value IGrouping.

0 голосов
/ 03 октября 2011

Вы группируете p (т.е. покупки) по дате - поэтому данные клиента больше не присутствуют.

Попробуйте вместо этого:

from p in Purchases 
join c in Customers on p.CustomerID equals c.ID
group new { p, c } by p.Date.Year into SalesPerYear
select new {
    CustomerName = SalesPerYear.First().c.Name,
    CustomerId = SalesPerYear.First().p.CustomerID,
    TotalSales = SalesPerYear.Sum(x => x.p.Price)
}

Или альтернативно:

from p in Purchases 
join c in Customers on p.CustomerID equals c.ID
group new { p.CustomerId, p.Price, c.CustomerName } 
   by p.Date.Year into SalesPerYear
select new {
    SalesPerYear.First().CustomerName,
    SalesPerYear.First().CustomerId
    TotalSales = SalesPerYear.Sum(x => x.Price)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...