分组通过价格和他们的销售总结成使用LINQ

问题描述:

特定的价格区间

我已经写了下面的代码组我的销售转化为具体的价格范围内像以下:分组通过价格和他们的销售总结成使用LINQ

var priceRanges = ranges.Select(r => new PriceRangeGraph 
{ 
    Price = Math.Round(r, 2), 
    Sales = lista.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r) 
       .Sum(x => x.SaleNumber)  
}).ToList(); 

请注意代码的下面一行:

Sales = lista.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r) 
      .Sum(x => x.SaleNumber) 

并假设我的范围类型的值列表 - 双其值:

Item 0: 0 
Item 1: 3.57 
Item 2: 7.14 
Item 3: 10.70 
Item 4: 14.28 
Item 5: 17.84 
Item 6: 21.41 
Item 7: 24.99 

并且在整个列表中有两个销售谁的销售价格是15($);

做这个查询如上所述的地方价格销售到17.84范围,因为14.28 $是< 15 $,因此这个查询并没有做它的工作,因为它应该。我的问题是,是否有更聪明的方法来解决这个问题,将销售放到真正对应的范围内?

有人可以帮我改写这个吗?

P.S.也许它确实放在了正确的范围内......但是,我将如何显示这些范围,我的意思是按什么顺序?

Some would have to be list[i-1] - [list[i] 

如果我是正确的?

+2

什么?我不明白你在问什么。 – Joe

+1

我不是:)你问**我们** **你的**查询的**期望**输出应该是什么? –

+1

“范围”是什么意思?你是否试图将'销售额'的总和分组,以便'$ 14.28'到'$ 17.84'范围内的结果是2,如果有2个销售额是$ 15.00' –

您可以反转您的范围,然后找到firstOrDefault(y => y < = x.SalePrice)。稍后以价格订购您的PriceRanges。

对不起,这个答案是从iPad输入的,因此格式不正确。