-5
A
回答
2
只需将它们创建为POCO(简单的包含数据定义的C#类),例如
class source
{
public List<category> Categories = new List<category>();
}
class category
{
public category(string name)
{
Name = name;
}
public string Name {get;set;}
public List<product> Products = new List<product>();
}
class product
{
public product(string name)
{
Name = name;
}
public string Name { get; set; }
}
然后进行测试:
static void test()
{
product spoon = new product("spoon");
category cutlery = new category("cutlery");
cutlery.Products.Add(spoon);
source mystuff = new source();
mystuff.Categories.Add(cutlery);
}
1
- 来源应该有类别
- 类别集合应该有产品的集合。
- 产品仅由类别和不“知道”的 另外两个。
1
你需要两个类Category
和Product
。每个Product
都有其所属的属性Category
。 您可以将它们存储在Dictionary<Category, List<Product>>
中,然后您可以轻松查找给定类别的所有产品。
这里是一个可能的实现,您可以在一本字典,因为它们将覆盖GetHashCode
使用这些类甚至是关键:
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public override int GetHashCode()
{
return CategoryId.GetHashCode();
}
public override bool Equals(object obj)
{
Category c2 = obj as Category;
if (c2 == null) return false;
return CategoryId == c2.CategoryId;
}
}
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
publlic Category Category { get; set; }
public override int GetHashCode()
{
return ProductId.GetHashCode();
}
public override bool Equals(object obj)
{
Product p2 = obj as Product;
if (p2 == null) return false;
return ProductId == p2.ProductId;
}
}
初始化(通常是从DAL):
var cat1 = new Category(){CategoryId=1,Name="ABC"};
var cat2 = new Category(){CategoryId=2,Name="DEF"};
var products1 = new List<Product>(){
new Product(){ProductId=1,Name="Prod1",Category=cat1},
new Product(){ProductId=2,Name="Prod2",Category=cat1},
new Product(){ProductId=3,Name="Prod3",Category=cat1}
};
var products2 = new List<Product>(){
new Product(){ProductId=4,Name="Prod4",Category=cat2},
new Product(){ProductId=5,Name="Prod5",Category=cat2},
};
var categoryProducts = new Dictionary<Category, List<Product>>()
{
{ cat1, products1},
{ cat2, products2}
};
现在你可以查询给定类别的所有产品:
List<Product> products = categoryProducts[cat1];
来源可能是一个List<Category>
:
var source = new List<Category>();
// fill from DAL
foreach(Category cat in source)
foreach(Product product in categoryProducts[cat])
Console.WriteLine("Category:{0} Product:{1}", cat.Name, product.Name);
相关问题
- 1. 在手柄帮手中使用数据
- 2. 使用关系数据库
- 3. 关闭数据库句柄
- 4. 新手 - 数据库中的关系
- 5. 手柄-0从在C++数据库值
- 6. SQL数据库句柄类
- 7. 使用关系数据库和关系数据库对象的区别
- 8. 使用无关数据的关系数据库 - 最佳实践
- 9. Django的:使内存的关系,而不保存到数据库
- 10. MySql |关系数据库vs非关系数据库的性能
- 11. 数据库关系
- 12. 数据库关系
- 13. 数据库关系
- 14. 关系数据库
- 15. 数据库日期时间空手柄
- 16. 关系数据库或NoSQL数据库
- 17. 数据库结构关系数据库
- 18. 对象数据库关系数据库
- 19. 关系数据库在phpmyadmin
- 20. 关系在SQL数据库
- 21. 在nosql数据中使用类似于schema的关系数据库
- 22. 指数数据库关系
- 23. 数据库错误:关系不存在
- 24. 关系数据库中的关系“OR”
- 25. 替代使用关系数据库中简单数据的多对多关系
- 26. 关系数据库系统使用哪些数据结构来存储数据?
- 27. MVC首先使用关系数据库
- 28. 使用XML模拟关系数据库
- 29. 使用LINQ搜索关系数据库
- 30. 使用UML建模数据库:关系
这是一种选择,但关系可以是对称的:产品可以有一个类别属性,类别可以有一个源属性。 –
数据集之间的关系是否正确? – user2199343