2

我想获取当前类别中的所有项目以及链接到当前类别的所有子类别。目前我使用递归函数这样做,但我怀疑它可以通过修改查询来完成。主要原因是我想使用.Skip().Take()但如果我仍然必须首先使用递归来获取所有类别,这不会有任何区别。

数据库

在此处输入图像描述

我想要做的我的递归函数

public static IQueryable<Models.Item> Items(int id, List<Models.Item> items)
{
    if (items == null)
    {
        items = new List<Item>();
    }

    ModelDataContext _db = new ModelDataContext();

    var currentCategory = _db.Categories.Where(x => x.ID == id).Single();

    items.AddRange(currentCategory.Items);

    foreach (var c in currentCategory.Categories)
    {
        Items(c.ID, items);
    }

    return items.AsQueryable();
}

tl;博士;
具有递归函数,可获取类别和子类别中的所有项目。想知道仅通过 LINQ 本身是否有可能。

4

1 回答 1

0

EF 或 LINQ to SQL 都不支持预先加载自引用对象。如果他们支持新的 HeirarchyID 是可能的,但可惜的是,目前这两个平台都没有真正的支持。

于 2012-09-19T17:35:03.953 回答