Group by range using linq(使用 linq 按范围分组)
本文介绍了使用 linq 按范围分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们如何使用分组范围等于或大于?
how can we use groupped ranges for equal or greater than ?
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
需要的输出按等于或大于使用的范围分组
Needed output is grouped by equal or greater than the range used
price >= 10 -> 6
price >= 50 -> 4
price >= 100 -> 3
price >= 500 -> 1
推荐答案
var grouped = ranges.Select(r => new {
Price = r,
Count = data.Where(x => x.Price >= r).Count() });
另一种选择(如果您有大量数据,那么分组比枚举每个价格组的所有数据更好):
And another option (if you have huge data, then grouping is better than enumerating all data for each price group):
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)
});
这篇关于使用 linq 按范围分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:使用 linq 按范围分组
基础教程推荐
猜你喜欢
- Mono https webrequest 失败并显示“身份验证或解密失败" 2022-01-01
- 重新排序 WPF TabControl 中的选项卡 2022-01-01
- SonarQube C# 分析失败“不是指针的有效行偏移" 2022-01-01
- 获取C#保存对话框的文件路径 2022-01-01
- 从 C# 控制相机设备 2022-01-01
- 更新 Visual Studio 中的 DataSet 结构以匹配新的 SQL 数据库结构 2022-01-01
- 如果条件可以为空 2022-01-01
- 在 VB6 或经典 ASP 中使用 .NET 2022-01-01
- C# 9 新特性——record的相关总结 2023-04-03
- 将数据集转换为列表 2022-01-01
