按价格分组并使用LINQ将其销售额汇总到特定的价格范围

时间:2017-03-07 20:12:57

标签: c# 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)

假设我的范围是List类型的值 - double,其值为:

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 

在整个列表中有2个销售人员'促销价为15($);

如上所述进行此查询将价格销售置于17.84范围内,因为14.28 $是< 15美元,因此这个查询并没有按照它应该做的工作。我的问题是,是否有更智能的方法来解决这个问题,将销售额放到真正相应的范围内?

有人可以帮我改写吗?

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

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

如果我没问题?

1 个答案:

答案 0 :(得分:0)

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

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