Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法在LINQ查询中调用两次_Linq_Linq To Objects - Fatal编程技术网

方法在LINQ查询中调用两次

方法在LINQ查询中调用两次,linq,linq-to-objects,Linq,Linq To Objects,在我们的应用程序中,我们有一个如下的小查询: var selectedAgents = from agent in listAgents where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive || (this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession select a

在我们的应用程序中,我们有一个如下的小查询:

var selectedAgents = from agent in listAgents
    where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive || 
          (this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession 
           select agent;
Vehicle parentVehicle = collectionVehicles.GetVehicleByAgent(agent);

if (parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession)
{
    selectedAgents.Add(agent);
}
var selectedAgents =
    from agent in listAgents
    let parentVehicle = collectionVehicles.GetVehicleByAgent(agent)
    where parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession 
    select agent;
这很好,但是getVehicleBayAgent方法被调用了两次,这可能不是必需的

在LINQ之前,我们有一个foreach循环,并这样做:

var selectedAgents = from agent in listAgents
    where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive || 
          (this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession 
           select agent;
Vehicle parentVehicle = collectionVehicles.GetVehicleByAgent(agent);

if (parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession)
{
    selectedAgents.Add(agent);
}
var selectedAgents =
    from agent in listAgents
    let parentVehicle = collectionVehicles.GetVehicleByAgent(agent)
    where parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession 
    select agent;
正如您所看到的,GetVehicleBayAgent返回一个Vehicle对象,可以轻松地进行多次比较。因此,我正在寻找一种方法,在LINQ查询中重新设置车辆并保留它。我不想调用GetVehicleBayAgent两次。

您需要使用,如下所示:

var selectedAgents = from agent in listAgents
    where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive || 
          (this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession 
           select agent;
Vehicle parentVehicle = collectionVehicles.GetVehicleByAgent(agent);

if (parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession)
{
    selectedAgents.Add(agent);
}
var selectedAgents =
    from agent in listAgents
    let parentVehicle = collectionVehicles.GetVehicleByAgent(agent)
    where parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession 
    select agent;
您需要使用,如下所示:

var selectedAgents = from agent in listAgents
    where (this.collectionVehicles.GetVehicleByAgent(agent)).IsActive || 
          (this.collectionVehicles.GetVehicleByAgent(agent)).IsSoldSinceCurrentSession 
           select agent;
Vehicle parentVehicle = collectionVehicles.GetVehicleByAgent(agent);

if (parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession)
{
    selectedAgents.Add(agent);
}
var selectedAgents =
    from agent in listAgents
    let parentVehicle = collectionVehicles.GetVehicleByAgent(agent)
    where parentVehicle.IsActive || parentVehicle.IsSoldSinceCurrentSession 
    select agent;

是的,就是这样!工作完美!是的,就是这样!工作完美!