2012-06-19 14 views
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"]);      
} 
+0

嘗試puting一個破發點中populate_data方法,看看醫生的工作的價值[「DistributorId」]是。 – Kell

+0

您正在創建一個只有csVehicle而不是csDistributor的集合(示例列表())。您在csVehicle類中擁有哪些屬性? – praveen

回答

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);  
    } 
} 
+0

它有一個運行時錯誤,因爲「objv.Add(v)」和objv.add(d)。它將它們添加到索引0,1上,並且由於它們的大小相等而導致錯誤。 @MusiGenesis – user1466650

相關問題