创建字典或可相关对象

时间:2013-08-29 20:41:13

标签: c# dictionary ienumerable

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

我想要做的是使用list / dictionary / ienumerable set创建一些东西,这样如果我给一个函数一个产品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>();
    }
}

2 个答案:

答案 0 :(得分:0)

您现在需要做的就是在循环内创建一个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;
    }

答案 1 :(得分:0)

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

如果这是您问题的良好翻译,那么您可以这样做:

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];