1

这是有问题的两种方法

我想返回 csVehicle 和 csDistributor 的对象,因为我下面的代码只返回 csVehicle

请帮忙

public List<csVehicle> get_All_Vehicles()
{            
    var objv = new List<csVehicle>(); 
    IDataReader dr = null;
    var objdal = new csDAL();
    dr = objdal.executespreturndr("sp_Get_All_Distributor");
    while (dr.Read())
    {
        var d = new csDistributor();     // I put this here so that I can use the propDistrbutorId
        var v = new csVehicle();
        populate_Data(dr, d,v);
        objv.Add(v);                    //It only adds object of csVehicles and csDistributor is not added
    }
    return objv;                        // csDistributor is not returned
}

populate_Date 方法将数据添加到两个对象 csDistributor 和 csVehicle

private void populate_Data(IDataReader dr, csDistributor d, csVehicle v)
{
    v._vehicleRegNo = dr["VehicleRegNo"].ToString();
    d.propDistrbutorId = Convert.ToInt32(dr["DistrbutorId"]);                      
}
4

1 回答 1

0

这是一个简单的解决方案:

public List<object> get_All_Vehicles()
{            
    var objv = new List<object>(); 
    IDataReader dr = null;
    var objdal = new csDAL();
    dr = objdal.executespreturndr("sp_Get_All_Distributor");
    while (dr.Read())
    {
        var d = new csDistributor();
        var v = new csVehicle();
        populate_Data(dr, d,v);
        objv.Add(v);                
        objv.Add(d);    
    }
    return objv;                        
}

更复杂的解决方案是定义一个父类,csDistributor 和 csVehicle 都从该类继承,然后返回List<>该特定类型的 a。

或者使用一个ArrayList,它只是一个无类型的对象集合。

编辑:我不得不猜测您的代码是如何在其他地方使用的,但试试这个:

public void get_All_Vehicles(out csVehicle vehicle, out csDistributor distributor)
{            
    vehicle = new List<csVehicle>(); 
    distributor = new List<csDistributor>();
    IDataReader dr = null;
    var objdal = new csDAL();
    dr = objdal.executespreturndr("sp_Get_All_Distributor");
    while (dr.Read())
    {
        var d = new csDistributor();
        var v = new csVehicle();
        populate_Data(dr, d,v);
        vehicle.Add(v);                
        distributor.Add(d);    
    }
}
于 2012-06-19T14:56:57.050 回答