sta*_*der 7 c# linq group-by range
我们如何使用分组范围等于或大于?
var data = new[] {
    new { Id = 0, 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 ) );
grouped ouput is 
price 10-50 -> 3 
price 50-100 -> 1 
price 100-500 -> 2 
所需输出的分组等于或大于使用的范围
price >= 10 -> 6
price >= 50 -> 4
price >= 100 -> 3
price >= 500 -> 1
Ser*_*kiy 12
var grouped = ranges.Select(r => new { 
            Price = r, 
            Count = data.Where(x => x.Price >= r).Count() });
另一种选择(如果您有大量数据,那么分组比枚举每个价格组的所有数据更好):
var priceGroups = data.GroupBy(x => ranges.FirstOrDefault(r => r > x.Price))
                      .Select(g => new { Price = g.Key, Count = g.Count() })
                      .ToList();
var grouped = ranges.Select(r => new
{
    Price = r,
    Count = priceGroups.Where(g => g.Price > r || g.Price == 0).Sum(g => g.Count)
});
| 归档时间: | 
 | 
| 查看次数: | 8192 次 | 
| 最近记录: |