2017-02-27 197 views
0
[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; } 
} 

以上是两个表格,我想要显示类别列表,包括每个类别中产品的数量。我如何使用它?如何显示一个到多个关系表中的记录?

+0

欢迎太(因此) 。请阅读[问]并考虑扩展您的问题以解释*您想如何使用它*以及您到目前为止所尝试的内容,例如 - 您是否需要查询数据库?你试过什么Linq-SQL不起作用? –

+0

此问题已在[这里]回答(http://stackoverflow.com/questions/3600940/what-linq-query-can-i-use-to-return-a-count-of-all-products-by-类别) –

回答

-1
var categoryCounts = 
    from p in products 
    group p by p.Category into g 
    select new { Category = g.Key, ProductCount = g.Count() }; 

Count of all products by category

+0

所以你的问题不是多对多的。它是一对多的,因为Categories Table具有产品的ICollection,而您的产品表只有Categories表的外键。 –

+0

好吧,我读得太快了,被复杂的“类别”所迷惑(为什么人们会这么做?)。无论如何,它仍然没有必要使用分组。您可以简单地计算每个类别的产品。 –

1

出人意料的是,在重复的问题+答案,这里给出的答案,也没有发生任何人,你可以简单地做:

var counts = from c in context.Categories 
      select new 
      { 
       c.CategoryName, 
       ProductCount = c.Products.Count() 
      }; 
+0

和往常一样,复杂性被误认为是熟练程度。 –

相关问题