使用Linq按可变整数范围分组

12 c# linq group-by

我试图根据整数的范围对一组数据进行分组,范围不会以固定的间隔增加.

我有

商品编号价格
1 10
2 30
3 50
4 120

我想将价格分为0 - 10,11 - 100和100-500.因此,项目1在组A中,项目2,3,在组B中,项目4在组C中.

我最接近的是项目组项目(items.price/10)

然后加入各组以获得不同的范围.

有任何想法吗?

Av *_*zur 30

参数化范围上限列表......

var ceilings = new[] { 10, 100, 500 };
var groupings = items.GroupBy(item => ceilings.First(ceiling => ceiling >= item));
Run Code Online (Sandbox Code Playgroud)

  • +1,因为对于最一般的情况来说,这自然是可扩展的,因为上限列表本身可以通过“Enumerable.Range().Select()”动态生成 (2认同)

jpb*_*chi 5

这样的事情怎么样?

var data = new[] {
    new { Id = 1, Price = 2 },
    new { Id = 1, Price = 10 },
    new { Id = 2, Price = 30 },
    new { Id = 3, Price = 50 },
    new { Id = 4, Price = 120 },
    new { Id = 5, Price = 200 },
    new { Id = 6, Price = 1024 },
};

var ranges = new[] { 10, 50, 100, 500 };

var grouped = data.GroupBy( x => ranges.FirstOrDefault( r => r > x.Price ) );
Run Code Online (Sandbox Code Playgroud)