Asp.net 如何显示一对多关系表中的记录? [表格(“类别”)] 公共类类别 { 公共类别() { Products=新的HashSet(); } public int CategoryId{get;set;} 公共字符串CategoryName{get;set;} 公共虚拟ICollection产品{get;set;} } [表(“产品”)] 公共类产品 { public int ProductId{get;set;} [必需,显示(Name=“Product Name”)] 公共字符串ProductName{get;set;} 已创建公共日期时间{get;set;} public int CategoryId{get;set;} 公共虚拟类别类别{get;set;} }
上面是两个表,我想显示类别列表,包括每个类别中的产品数量。我如何使用它Asp.net 如何显示一对多关系表中的记录? [表格(“类别”)] 公共类类别 { 公共类别() { Products=新的HashSet(); } public int CategoryId{get;set;} 公共字符串CategoryName{get;set;} 公共虚拟ICollection产品{get;set;} } [表(“产品”)] 公共类产品 { public int ProductId{get;set;} [必需,显示(Name=“Product Name”)] 公共字符串ProductName{get;set;} 已创建公共日期时间{get;set;} public int CategoryId{get;set;} 公共虚拟类别类别{get;set;} },asp.net,linq-to-sql,ef-code-first,Asp.net,Linq To Sql,Ef Code First,上面是两个表,我想显示类别列表,包括每个类别中的产品数量。我如何使用它 [Table("Categories")] public class Category { public Category() { Products = new HashSet<Product>(); } public int CategoryId { get; set; } public string CategoryName { get;
[Table("Categories")]
public class Category
{
public Category()
{
Products = new HashSet<Product>();
}
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
[Table("Product")]
public class Product
{
public int ProductId { get; set; }
[Required, Display(Name = "Product Name")]
public string ProductName { get; set; }
public DateTime Created { get; set; }
public int CategoryId { get; set; }
public virtual Category Categories { get; set; }
}
令人惊讶的是,在重复的问题+答案和这里给出的答案中,没有人想到你可以简单地做到:
var categoryCounts =
from p in products
group p by p.Category into g
select new { Category = g.Key, ProductCount = g.Count() };
也欢迎。请阅读并考虑扩展您的问题,以解释您想如何使用它和您所尝试的到目前为止,例如,你需要查询数据库吗?您尝试过哪些Linq SQL不起作用?此问题已在中得到回答,因此您的问题不是多对多。这是一对多,因为Categories表有一个product的ICollection,而您的product表只有Categories表的外键。好吧,我读得太快了,被复数的
Categories
迷惑了(人们为什么这么做?)。无论如何,仍然没有必要使用分组。你可以简单地数一数每一类的产品。和往常一样,复杂性被误认为是熟练程度。
var counts = from c in context.Categories
select new
{
c.CategoryName,
ProductCount = c.Products.Count()
};