2

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では標準偏差はサポートされていません。

ここで1つのアプローチが提案されました: LINQの標準偏差

ただし、これは不格好であり、可能性のあるnull値を処理するために少し追加の作業が必要です。これは、SQLSTDEV関数が自動的に無視します。さらに、ネットワークを介して送信されるデータが少なくなり、計算が高速になります。

これを行う方法はありますか?

4

1 に答える 1

0

いいえ、LINQを介して直接それを行う方法はありません。

SQL ServerでアグリゲートをラップするだけのCLRアグリゲートを作成することもできますが、それ(可能ではありますが)大量の過剰な作業になります。STDEV

ただし、抵抗を最小にするオプションは、標準偏差が必要なクエリごとになります。操作を実行するストアドプロシージャを作成し、LINQ-to-SQLを使用してそれを呼び出します。

または、LINQ-to-SQLで合成を使用する場合は、SQLサーバーでユーザー定義のテーブル関数を作成し、それをLINQ-to-SQLでアクセスして、それを使用してクエリを合成できます。

于 2012-08-06T19:47:14.127 に答える