创建字典或可枚举对象

本文关键字:枚举 对象 字典 创建 | 更新日期: 2023-09-27 18:29:44

因此,我有一个数据库中的两列,它将返回我的商店中的所有产品以及与该产品关联的部门id。

我想做的是使用列表/字典/inumerable集创建一些东西,这样,如果我给函数一个产品id,它就会吐出部门id。目前,我在正确声明方面遇到了一些问题,需要该部门的一些帮助。

首先,我有了产品和类别之间关系的基础。然后我希望ProductCategoryCollection返回每个产品和类别/部门的所有映射的集合。我被困在第二部分,不确定从我现在的位置去哪里。

helper.GetProductToCategoryMatching()返回数据库中的行。

public class ProductAndCategoryID
{
    public ProductAndCategoryID(int product, int category)
    {
        this.productID = product;
        this.categoryID = category;
    }
    public int productID;
    public int categoryID;
}
public class ProductCategoryCollection : IEnumerable<ProductAndCategoryID>
{
    public ProductCategoryCollection()
    {
    }
    public List<ProductCategoryCollection> populate()
    {
        ShippingClassHelper helper = new ShippingClassHelper();
        DataSet ds = new DataSet();
        List<ProductCategoryCollection> list = new List<ProductCategoryCollection>();
        ds = helper.GetProductToCategoryMatching();
        foreach (DataRow row in ds.Tables[0].Rows)
        {
        }
        return new List<ProductCategoryCollection>();
    }
}

创建字典或可枚举对象

现在所需要做的就是在循环中创建一个ProductCategoryCollection对象并将其添加到列表中。

public List<ProductAndCategoryID> populate()
    {
        ShippingClassHelper helper = new ShippingClassHelper();
        DataSet ds = new DataSet();
        List<ProductAndCategoryID> list = new List<ProductAndCategoryID>();
        ds = helper.GetProductToCategoryMatching();
        foreach (DataRow row in ds.Tables[0].Rows)
        {
          var pc = new ProductAndCategoryID();
          pc.ProductID = row[0];
          pc.CategoryID = row[1];
          list.Add(pc);
        }
        return list;
    }

如果我正确理解您的问题和要求,您希望获得一个将ProductID映射到CategoryID的字典,以便可以对给定ProductIDCategoryID执行查找。

如果这是一个很好的翻译你的问题,这是你可以做的:

var productMap = new ShippingClassHelper()
    .GetProductToCategoryMatching()
    .Tables[0].Rows
    .ToDictionary(row => (int)row[0], row => (int)row[1]);

它做出了以下假设:

  • "ProductID"字段是一个整数,也是一行中的第一个字段
  • "CategoryID"字段是一个整数,是一行中的第二个字段
  • 您的数据集不包含重复的"ProductID"值

现在,您可以使用此字典来执行查找。如果你想检查给定的产品id是否存在,你可以这样做:

var containsProduct660 = productMap.ContainsKey(660);

如果你想检索给定产品id的类别id,你可以这样做:

var categoryIdForProduct660 = productMap[660];