В нашем приложении у нас есть маленький запрос, который выглядит так:
var selectedAgents = from agent in listAgents
where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive ||
(this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession
select agent;
Это работает нормально, но метод GetVehicleByAgent вызывается два раза, и это, возможно, не требуется.
До LINQ у нас был цикл foreach, и мы делали так:
Vehicle parentVehicle = collectionVehicles.GetVehicleByAgent(agent);
if (parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession)
{
selectedAgents.Add(agent);
}
Как видите, GetVehicleByAgent возвращает объект Vehicle, который можно легко сравнить более одного раза. Поэтому я ищу способ вернуть Автомобиль в запросе LINQ и сохранить его. Я не хочу дважды вызывать GetVehicleByAgent.