有没有办法让LINQ直接将查询转换为SQL STDEV
等函数?例如,LINQ
from t in table
group t by t.something into g
select new {
avg = g.Average(o => o.number)
stdev = g.?????
}
变成了SQL AVG
。但是,LINQ中不支持标准偏差。
这里建议采用一种方法: Standard Deviation in LINQ
但是,这很笨重,它还需要一些额外的工作来处理可能的空值,sql STDEV
函数会自动忽略它。此外,它可以减少通过线路发送的数据,并且计算速度更快。
有什么办法吗?
答案 0 :(得分:0)
不,没有办法直接通过LINQ。
您可以创建一个CLR aggregate,它实际上只包含STDEV
aggregate在SQL Server中,但这将是一个过度的工作(虽然 可能)。< / p>
但是,对于您希望标准偏差的每个查询,最小阻力的选项将是,您将创建一个执行操作的存储过程,然后使用LINQ-to-SQL来调用它。
或者,如果要在LINQ-to-SQL中使用合成,可以create a user-defined table function in SQL server and then access that in LINQ-to-SQL使用该合成来编写查询。