我有一个sql查询,用于获取多个Bins的测量分布:
SELECT FLOOR(Value / @Step) * @Step AS Bin,
COUNT(*) AS Cnt FROM Measurements WHERE (StepId = @StepId)
GROUP BY Bin ORDER BY Bin
,其中 值=基于StepId(测量表中的主键)返回的测量值 Step =实际上是组的数量(分配中的Bins)。
如何使用LINQ
并根据动态创建的值范围创建分组。
请建议。
答案 0 :(得分:0)
我认为这就是你所追求的:
double step = 100;
var stepId = 1;
from m in context.Measurements
where m.StepId == stepId;
let bin = (Math.Floor(c.Value / step)) * step
orderby bin
group m by bin into x
select new { x.Key, Count = x.Count() }
你甚至可以省略Floor函数,因为整数上的“/”运算符在SQL中具有相同的功能。