C# 使用LINQ获取子类别中的所有项目

C# 使用LINQ获取子类别中的所有项目,c#,linq,C#,Linq,我想获取当前类别中的所有项目以及链接到当前类别的所有子类别。目前,我使用递归函数来实现这一点,但我怀疑只需修改查询即可。主要原因是我想使用.Skip和.Take,但如果我仍然必须首先使用递归来获取所有类别,则不会有任何区别 数据库 我的递归函数就是我想要的 tl;博士 具有递归函数,可获取类别和子类别中的所有项。想知道仅仅依靠LINQ本身是否可能。EF或LINQtoSQL都不支持快速加载自引用对象。如果他们支持新的HeirarchyID,这是可能的,但遗憾的是,目前这两个平台都没有真正的支持。E

我想获取当前类别中的所有项目以及链接到当前类别的所有子类别。目前,我使用递归函数来实现这一点,但我怀疑只需修改查询即可。主要原因是我想使用.Skip和.Take,但如果我仍然必须首先使用递归来获取所有类别,则不会有任何区别

数据库 我的递归函数就是我想要的 tl;博士
具有递归函数,可获取类别和子类别中的所有项。想知道仅仅依靠LINQ本身是否可能。

EF或LINQtoSQL都不支持快速加载自引用对象。如果他们支持新的HeirarchyID,这是可能的,但遗憾的是,目前这两个平台都没有真正的支持。

EF或LINQ to SQL都不支持快速加载自引用对象。如果他们支持新的HeirarchyID,这是可能的,但遗憾的是,在这一点上,两个平台都没有真正的支持。

据我所知,仅使用LINQ是不可能的。但是,如果您使用递归CTE,则可以通过一个查询完成该操作。@Qmal我认为Ian是对的。这个问题与您提出的问题非常相似:据我所知,仅使用LINQ是不可能的。但是,如果您使用递归CTE,则可以通过一个查询完成该操作。@Qmal我认为Ian是对的。这个问题与您所问的问题非常相似:
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();
}