Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ查询以根据计算值的范围进行分组_Linq_Grouping_Range - Fatal编程技术网

LINQ查询以根据计算值的范围进行分组

LINQ查询以根据计算值的范围进行分组,linq,grouping,range,Linq,Grouping,Range,我有一个sql查询,用于将度量值分布到多个容器中: SELECT FLOOR(Value / @Step) * @Step AS Bin, COUNT(*) AS Cnt FROM Measurements WHERE (StepId = @StepId) GROUP BY Bin ORDER BY Bin 在哪里 值=基于StepId返回的测量值(测量值表中的主键) 步骤=实际组数(分布中的箱子) 如何使用LINQ并基于动态创建的值范围创建分组

我有一个sql查询,用于将度量值分布到多个容器中:

SELECT FLOOR(Value / @Step) * @Step AS Bin,        
       COUNT(*) AS Cnt FROM Measurements WHERE (StepId = @StepId) 
       GROUP BY Bin ORDER BY Bin 
在哪里 值=基于StepId返回的测量值(测量值表中的主键) 步骤=实际组数(分布中的箱子)

如何使用
LINQ
并基于动态创建的值范围创建分组


请给出建议。

我想这就是你想要的:

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中具有相同的函数