C#Linq to SQL:查找儿童最多三个级别
我有一家商店,其类别存储在数据库中,如下所示: 类别使用ParentCategoryId相互嵌套,根父ID为0 我想知道如何检索最多3级(不超过3级)的类别列表?C#Linq to SQL:查找儿童最多三个级别,c#,linq-to-sql,C#,Linq To Sql,我有一家商店,其类别存储在数据库中,如下所示: 类别使用ParentCategoryId相互嵌套,根父ID为0 我想知道如何检索最多3级(不超过3级)的类别列表? 注意:对我来说很重要的一点是,如果可能的话,可以通过输入参数调整最大级别的数量。每个级别的循环如何 public void GetCategories(int level) { var categories = db.Categories.Where(c => c.ParentCategoryId == 0).ToLis
注意:对我来说很重要的一点是,如果可能的话,可以通过输入参数调整最大级别的数量。每个级别的循环如何
public void GetCategories(int level) {
var categories = db.Categories.Where(c => c.ParentCategoryId == 0).ToList();
var parents = categories.Select(c => c.Id);
for (var ii = 0; ii < level; ii++) {
var newCategories = db.Categories.Where(c => parents.Contains(c.ParentCategoryId).ToList();
parents = newCategories.Select(c => c.Id);
categories = categories.Concat(newCategories);
}
var result = categories;
}
public void GetCategories(int级别){
var categories=db.categories.Where(c=>c.ParentCategoryId==0.ToList();
var parents=categories.Select(c=>c.Id);
对于(var ii=0;iiparents.Contains(c.ParentCategoryId.ToList();
parents=newCategories.Select(c=>c.Id);
categories=categories.Concat(新类别);
}
var结果=类别;
}
我认为您需要所有级别,而不仅仅是最后一个级别。这是一个很好的答案,但是没有快捷方式或SQL查询可以避免多次运行查询以获得最终列表?您为什么需要这样做?过早的“优化”,您无法确定它是否会更快/更高效。。。