我有一个简单的linq查询,我需要过滤一定距离内的存储,并按距离计算结果进行排序,您就知道了。
因此,我现在结束了两次调用GetDistance方法的操作。如何优化代码以在每个商店中仅调用一次?
double distance = 50;
var result = stores.Where<MyStore>( s =>
Helper.GetDistance( lat, lon, s.Lat, s.Lon ) <= distance )
.OrderBy( s => Helper.GetDistance( lat, lon, s.Lat, s.Lon ) )
.ToList();
最佳答案
某些人(我)觉得Yuriy的答案等同于更容易阅读:
double maxDistance = 50;
var query = from store in stores
let storeDistance = Helper.GetDistance(lat, lon, store.lat, store.lon)
where storeDistance < maxDistance
orderby storeDistance
select store;
var result = query.ToList();
编译器将其简单地转换为看起来类似于Yuriy的代码的代码。
关于c# - Linq:对于Where和OrderBy调用相同的方法仅一次而不是两次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6392503/