После того, как вы сделали это
group p by p.SomeId into pg
, у вас больше нет доступа к переменным диапазона, использованным в начальном from
.То есть вы больше не можете говорить о p
или bp
, вы можете говорить только о pg
.
Теперь pg
является группой и поэтому содержит более одного продукта.Все продукты в данной pg
группе имеют одинаковый SomeId
(поскольку это то, что вы сгруппировали), но я не знаю, означает ли это, что все они имеют одинаковый BaseProductId
.
.чтобы получить название базового продукта, вам нужно выбрать конкретный продукт в группе pg
(как вы делаете с SomeId
и CountryCode
), и , затем присоединиться к BaseProducts
.
var result = from p in Products
group p by p.SomeId into pg
// join *after* group
join bp in BaseProducts on pg.FirstOrDefault().BaseProductId equals bp.Id
select new ProductPriceMinMax {
SomeId = pg.FirstOrDefault().SomeId,
CountryCode = pg.FirstOrDefault().CountryCode,
MinPrice = pg.Min(m => m.Price),
MaxPrice = pg.Max(m => m.Price),
BaseProductName = bp.Name // now there is a 'bp' in scope
};
Тем не менее, это выглядит довольно необычно, и я думаю, вам следует отступить назад и подумать, что вы на самом деле пытаетесь получить.