使用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);
这将从一定的时间间隔中获得所有的信息。