Мне кажется, что вы хотите:
.Select(g => new { ProductName = g.Key, TotalOrdered = g.Sum(x => x.NumberOf) })
Вы можете выполнить весь запрос как одно выражение запроса или вообще без использования выражений запроса:
var totalProducts = ctx.Orders
.Join(ctx.Products, o => o.ProductId, p => p.Id,
(o, p) => new { p.Name, o.NumberOf })
.GroupBy(t => t.Name,
pair => pair.Name, // Key selector
pair => pair.NumberOf, // Element selector
(key, numbers) => new {
ProductName = key,
TotalOrdered = numbers.Sum())
});
Или:
var totalProdcuts = from o in ctx.Orders
join p in ctx.Products on o.ProductId equals p.Id
group o.NumberOf by p.Name into g
select new { ProductName = g.Key, TotalOrdered = g.Sum() };