2015-11-09 72 views
0

我想從兩個列表中創建一個ArrayList,它們的對象是從SQL Server中的數據庫中提取的。從SQL Server填充列表,然後將它們的對象存儲到ArrayList中

這是我用來填充兩個列表代碼:

FoodStoreEntities context = new FoodStoreEntities(); 

List<Supplier> suppliers = context.Suppliers.ToList(); 
List<Manufacturer> manufacturers = context.Manufacturers.ToList(); 

這是如何,我想將它們添加到一個ArrayList:

ArrayList supplierManufacturer = new ArrayList(); 
foreach (Supplier item in suppliers) 
{ 
    supplierManufacturer.Add(item.vendor); 
    supplierManufacturer.Add(item.supplier_email); 
} 
foreach (Manufacturer item in manufacturers) 
{ 
    supplierManufacturer.Add(item.mfg); 
    supplierManufacturer.Add(item.mfgDiscount); 
} 

然而,當我嘗試顯示ArrayList,類型似乎不匹配。我得到「不匹配」當我運行控制檯:

static void Display(ArrayList aryList) 
{ 
    foreach (Object obj in aryList) 
    { 
     if (ObjectContext.GetObjectType(obj.GetType()) == typeof(Supplier)) 
     { 
      Supplier supplier = (Supplier)obj; 
      Console.WriteLine(supplier.vendor + " " + supplier.supplier_email); 
     } 
     else if (ObjectContext.GetObjectType(obj.GetType()) == typeof(Manufacturer)) 
     { 
      Manufacturer manufacturer = (Manufacturer)obj; 
      Console.WriteLine(manufacturer.mfg + " " + manufacturer.mfgDiscount); 
     } 
     else 
      Console.WriteLine("no match");  
    } 
} 

我不知道發生了什麼事,並試圖尋找相關的話題,但它也沒有用。請幫忙。謝謝!

+0

請注意,您插入Supplier.vendor,但希望獲得供應商。 – User1234

+0

在調試模式下運行它,並使用立即窗口http://stackoverflow.com/questions/794255/how-do-you-use-the-immediate-window-in-visual-studio看看你得到什麼類型。關鍵是「添加(item.vendor);」當你不添加項目本身,但它的屬性。 – krtek

+0

@krtek:我似乎在增加它的屬性,而不是項目本身。我已經改變它只是項目,它的作品。謝謝你的澄清! – Andrew

回答

0

您可以使用接口多態。並使用相互的屬性。 而在foreach循環中,您使用接口而不是對象。並使用屬性和方法來顯示所需的信息。

0

我發現了錯誤。感謝krtek。 我正在添加項目的屬性,而不是項目本身。將其更改爲添加項目本身。固定:)

相關問題