Этот код работает нормально, но мне было интересно, нет ли способа записать его в одном выражении LINQ, так что один проход может быть выполнен сервером базы данных вместо того, чтобы реализовать набор результатов, а затем цикл через него, что и будет делать мой код.Поиск границ с помощью 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
Я уверен, что 'logs' не сможет ссылаться на себя. – dahlbyk
@ dahlbyk: Было несколько опечаток, извините. – StriplingWarrior
groupby to, должен был подумать об этом, спасибо –