0

次のコード行があります (を使用MSSQL):

double avg = db.MyTable.Where(x => x.RecordDate < today).Select(z => z.value).Average();

SQL AVG()これは機能に変換されているのか、Average()クライアント側で実行されているのだろうか?

このテーブルには 1 日あたり 50,000 レコードが含まれており、私はデータベースに平均を計算させ、1 つの値のみを返すようにしたいと考えています。

SQLまた、データベースに送信されたクエリを確認するにはどうすればよいですか?

4

1 に答える 1

1

を列挙しない場合queryable、はい、averageデータベース側で行われます。

コードを簡素化することもできます。Expression<Func<T, double>>Select は必要ありません。(または decimal、int...) をパラメーターとして取る average のオーバーロードがあります。

double avg = db.MyTable.Where(x => x.RecordDate < today).Average(z => z.value);

生成された sql を確認する方法は非常に多くありsql generated linqます。

于 2013-10-07T09:48:51.787 に答える