使用实体框架获取每个类别和子类别中的前5个产品

时间:2013-07-30 06:14:38

标签: asp.net sql linq entity-framework

我在ASP.NET 4.5 Web项目中使用Entity Framework。我有一个产品表,每个产品都有其类别和子类别。类别可能没有子类别。

表产品

  • ID
  • 名称
  • CATEGORY_ID
  • subcategory_id
  • 日期

表类别

  • CATEGORY_ID
  • parent_category_id

如果类别有parent_category_id = 0,则它是父类别,否则它是同一个表中另一个类别的子类别。

我想在实体框架中创建一个查询,以便按日期从最新的子类别到最旧的子类别检索每个子类别的前5个产品。

最后,我想构建表格,显示每个子类别的前5个最新产品。

产品只能属于一个子类别。

这类问题的答案有一个类别,但没有子类别。我的问题是针对特定的数据库结构。感谢。

2 个答案:

答案 0 :(得分:3)

以下是使用lembda expressions

的前5个产品的代码
YourEntities DBContext = new YourEntities();

List<Category> categories = DBContext.categories.Where(d=> d.category_id!=null).ToList();
List<Product> prodcuts = null;
foreach (var item in categories)
{
    prodcuts = DBContext.Products.Where(d => d.category_id== item.category_id)
                 .OrderByDescending(d => d.date)
                                 .Take(5)
                                 .ToList();
}

答案 1 :(得分:2)

var q= context.Categories
   .Where( c => c.parent_category_id != 0  )
   .Select( c=> new {
        c.categoryName,
        Products = c.products.OrderByDesc(p => p.DateUpdated)
            .Take (5)
            .Select( p => new {
                p.name,
                p.price
            })
    });