このコードは正常に動作しますが、1 つの LINQ 式で記述して、結果セットを実現してからループする代わりに、データベース サーバーが単一のパスを実行できるようにする方法がないかどうか疑問に思っていました。コードが生成されます。
var logs = from AssetLog log in dc.AssetLogs
where log.AssetId == assetId && log.Recorded >= start && log.Recorded <= finish
select log;
return new GetInteractionBoundsResult()
{
N = logs.Max(log => log.Latitude),
S = logs.Min(log => log.Latitude),
W = logs.Min(log => log.Longitude),
E = logs.Max(log => log.Longitude)
};
では、LINQ の専門家の皆さん、データベースで多かれ少なかれこれを生成するには、上記をどのように記述すればよいでしょうか。
SELECT MIN(Latitude) S, MAX(Latitude) N, MIN(Longitude) W, MAX(Longitude) E
FROM ASSETLOG WHERE etc etc