创建字典或可枚举对象
本文关键字:枚举 对象 字典 创建 | 更新日期: 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
的字典,以便可以对给定ProductID
的CategoryID
执行查找。
如果这是一个很好的翻译你的问题,这是你可以做的:
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];