我正在尝试从两个列表中创建一个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");
}
}
我不知道发生了什么,并尝试搜索相关主题,但这无济于事。请帮忙。谢谢!
答案 0 :(得分:0)
您可以使用接口多态性。并使用相互属性。 在foreach循环中,您使用接口而不是对象。并使用属性和方法显示所需的信息。
答案 1 :(得分:0)
我发现了错误。感谢krtek。 我正在添加项目的属性而不是项目本身。将其更改为添加项目本身。修正:)