完成此操作后
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 };也就是说,这看起来很不寻常,我认为您应该退后一步,考虑一下您实际尝试检索的内容。



