LINQ to Entitiesで「各カラムの最大値」を求める良い方法を教えてください
あるテーブルの各カラムの最大値を1つのクエリで取り出したいです。
SQLで書けば、下記のようになると思います。
select max(column1),max(column2),max(column3) from table1;
これをLINQを使って下記のように実現しましたが、例1では複数のクエリが発行されてしまいますし、例2では「GroupBy句でIDに0を掛けて1つのグループにする」ことで疑似的に実現しているため、うまくないように思えます。
LINQで無理やりではない(より良い)実現方法を教えていただけるでしょうか?
例1.
var column1 = db.table1.Max(a => a.column1);
var column2 = db.table1.Max(a => a.column2);
var column3 = db.table1.Max(a => a.column3);
例2.
db.table1.GroupBy(a => a.Id * 0).Select(a => new {
column1 = a.Max(b => b.column1),
column2 = a.Max(b => b.column2),
column3 = a.Max(b => b.column3),
}).FirstOrDefault();
フレームワーク:.Net Framework 4.6.1、Entity Framework 6.0