【问题标题】:Populating Lists from SQL Server and then store their objects into an ArrayList从 SQL Server 填充列表,然后将它们的对象存储到 ArrayList
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2017-07-31
      • 2013-03-31
      • 1970-01-01
      • 2015-10-12
      • 2020-11-20
      相关资源
      最近更新 更多