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()
             };