Asp.net MVC - LINQ和Hieararchical数据

时间:2009-05-14 10:05:07

标签: asp.net-mvc linq

我有一个包含这两个表的数据库

ProductCategory    
 IDCat
 Name
 Description


ProductSubCategories
 IDSub
 Name
 IDCat

此表与IDCat相关。

如何使用LINQ检索按类别分组的类别和子类别列表?

在我的PartialView中,我想创建一个包含Category和SubCategories的菜单,如下所示:

Category1
    SubCategory1
    SubCategory2
    SubCategory3
 Category2
    SubCategory1
    SubCategory2
    SubCategory3
 Category3
    SubCategory1

2 个答案:

答案 0 :(得分:0)

MyDataContext db=new MyDataContext();

IQueryable<ProductCategory> categories= db.Categories;

foreach (Category c in categories){
  Console.WriteLine (c.Name);
  foreach (ProductSubCategories sub in c.ProductSubCategories){
    Console.Writeline (sub.Name);
  }  
}

修改以视图格式

进行回答
<% foreach (Category c in Model){ %>
<%= Html.Encode(c.Name) %> <br />
    <% foreach (ProductSubCategories sub in Model.Categories){ %>        
        <%= Html.Encode(sub.Name) %> <br />               
    <% } %>
<%} %>

这应该工作(或接近),但我已经注意到了语法测试。请注意,正如其他人指出的那样,必须正确设置主键和外键才能使其正常工作。

答案 1 :(得分:0)

如果在DB中正确设置PK-FK,LINQ to SQL将为您执行对象关联。因此,ProductCategory中将有一个属性作为ProductSubCategory的EntitySet。

关键是你的DB PK-FK ref必须正确,LINQ代码生成器才能选择它。