【发布时间】:2015-11-09 07:00:39
【问题描述】:
我正在尝试从两个列表创建一个 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");
}
}
我不知道发生了什么,并尝试搜索相关主题,但无济于事。请帮忙。谢谢!
【问题讨论】:
-
请注意,您插入了一个 Supplier.vendor,但希望得到该供应商。
-
在调试模式下运行它并使用即时窗口stackoverflow.com/questions/794255/… 来查看您获得的类型。关键是“添加(item.vendor);”当您不是添加项目本身而是它的属性时。
-
@krtek:似乎我正在添加它的属性,而不是项目本身。我已将其更改为仅该项目,并且可以正常工作。感谢您的澄清!
标签: c# sql-server list arraylist