如何显示一个到多个关系表中的记录?
[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() };
所以你的问题不是多对多的。它是一对多的,因为Categories Table具有产品的ICollection,而您的产品表只有Categories表的外键。 –
好吧,我读得太快了,被复杂的“类别”所迷惑(为什么人们会这么做?)。无论如何,它仍然没有必要使用分组。您可以简单地计算每个类别的产品。 –
出人意料的是,在重复的问题+答案,这里给出的答案,也没有发生任何人,你可以简单地做:
var counts = from c in context.Categories
select new
{
c.CategoryName,
ProductCount = c.Products.Count()
};
和往常一样,复杂性被误认为是熟练程度。 –
欢迎太(因此) 。请阅读[问]并考虑扩展您的问题以解释*您想如何使用它*以及您到目前为止所尝试的内容,例如 - 您是否需要查询数据库?你试过什么Linq-SQL不起作用? –
此问题已在[这里]回答(http://stackoverflow.com/questions/3600940/what-linq-query-can-i-use-to-return-a-count-of-all-products-by-类别) –