从SQL Server填充列表,然后将其对象存储到ArrayList中

时间:2015-11-09 07:00:40

标签: c# sql-server list arraylist

我正在尝试从两个列表中创建一个ArrayList,这些列表的对象是从SQL Server中的数据库中提取的。

这是我用来填充两个列表的代码:

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");    
    }
}

我不知道发生了什么,并尝试搜索相关主题,但这无济于事。请帮忙。谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用接口多态性。并使用相互属性。 在foreach循环中,您使用接口而不是对象。并使用属性和方法显示所需的信息。

答案 1 :(得分:0)

我发现了错误。感谢krtek。 我正在添加项目的属性而不是项目本身。将其更改为添加项目本身。修正:)