如何在SQL Server中创建递归关联并在C#with Entity Framework中循环它?
我正在尝试为一个问题库设计一个数据库结构,然后是一个可以显示该问题库的应用程序 在我的数据库中,有一个名为Category的实体表。每个类别可以有多个子类别,每个子类别可以有多个子类别等。这是一个递归关联 目前,我将其设计如下:如何在SQL Server中创建递归关联并在C#with Entity Framework中循环它?,c#,database,entity-framework,recursion,C#,Database,Entity Framework,Recursion,我正在尝试为一个问题库设计一个数据库结构,然后是一个可以显示该问题库的应用程序 在我的数据库中,有一个名为Category的实体表。每个类别可以有多个子类别,每个子类别可以有多个子类别等。这是一个递归关联 目前,我将其设计如下: [Table: Category] category_id category_number category_name parrent_id [Table: Question] question_id question_number question_wording
[Table: Category]
category_id
category_number
category_name
parrent_id
[Table: Question]
question_id
question_number
question_wording
question_category
一个具体的例子是:
- Categories
category_id = 1
category_number = 1
category_name = Milk Products
parret_id = null
category_id = 2
category_number = 1.1
category_name = Cheese
parent_id = 1
category_id = 3
category_number = 1.1.1
category_name = Soft
parrent_id = 2
- Questions
question_id = 1
question_number = 1
question_wording = "From 1-5, how much do you like soft cheese?"
category_id = 3
question_id = 2
question_number = 1
question_wording = "How much do you like cheese?"
category_id = 2
我如何循环浏览类别并显示每个类别和问题,如下所示:
Questionnarie
- Milk products
-- Cheese
-- "How much do you like cheese?"
--- Soft-Cheese
--- "From 1-5, how much do you like soft cheese?"
我正在使用实体框架将数据库加载到c中#
提前谢谢 您可以像使用普通C#代码一样执行此操作。您可以进行递归函数调用:
public IEnumerable<Category> GetSubCategoriesFor(int catId)
{
var subs = db.Categories.Where(c => c.ParentId == catId);
foreach (var sub in subs)
{
yield return sub;
// Recursive call
foreach (var subsub in GetSubCategoriesFor(sub.Id))
{
yield return subsub;
}
}
}
public IEnumerable GetSubcategories for(int catId)
{
var subs=db.Categories.Where(c=>c.ParentId==catId);
foreach(子系统中的var子系统)
{
收益率分包;
//递归调用
foreach(GetSubCategoriesFor(sub.Id))中的var子类)
{
收益子项;
}
}
}