0

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

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

2 回答 2

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;
    }
于 2013-08-29T20:45:28.153 回答
0

如果我正确理解了您的问题和您的要求,您希望获得一个将 a 映射ProductID到 a的字典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];
于 2013-08-29T21:46:44.117 回答