1

これらは、問題を抱えている2つの方法です

以下のコードはcsVehicleのみを返すため、csVehicleとcsDistributorの両方のオブジェクトを返したい

助けてください

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 の 2 つのオブジェクトにデータを追加します。

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<>その特定の型の を返すことです。

または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 に答える