使用Linq按variables整数范围进行分组

我试图根据一个整数范围来分组一组数据,范围不会以一个固定的时间间隔增加。

例如,我有

项目ID价格
1 10
2 30
3 50
4 120

我想分组的价格0 – 10,11 – 100,和100 – 500。 因此,项目1在组A,项目2,3,组B,项目4在组C.

最近我可以上来的是项目组项目(items.price / 10)

然后join这些小组以获得不同的范围。

有任何想法吗?

谢谢! 珍妮

参数化范围上限列表…

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

这样的事情呢?

 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 ) ); 

也许像(未经testing):

 item.Price <= 10 ? "A" : (item.Price <= 100 ? "B" : (item.Price <= 500 ? "C" : "X")) 

(和这个组)

如果这是LINQ到对象,你也可以在静态工具函数( GetBand(i)或类似的)中做到这一点。 或者使用LINQ到SQL,您可以使用与映射到数据上下文的标量UDF相同的方法。

你可以用Linqselect不同的集合。

就像是:

  var newList = theList.Where(i => i < 30 && i >10); 

这将从一定的时间间隔中获得所有的信息。