"Operation is not valid due to the current state of the object." 异常,当我想检索项目时

"Operation is not valid due to the current state of the object." Exception, when I want to retrieve Items

我使用此方法在 Blazor Serverside 中检索树组件的项目,在 DAL 中我有:

public List<TreeItem> GetTreeItems()
    {
        var tree = new List<TreeItem>();
        TreeItem item = new TreeItem()
        {
            DepartmentID = 0,
            CategoryID = 0,
            Text = "Root",
            Childs = context.Departments.OrderBy(d => d.Order).Select(d => new TreeItem()
            {
                DepartmentID = d.Id,
                CategoryID = 0,
                Text = d.Title,
                Childs = d.Categories.OrderBy(c => c.Order).Select(c => new TreeItem()
                {
                    DepartmentID = d.Id,
                    CategoryID = c.Id,
                    Text = c.Title                         
                }).ToList()
            }).ToList()
        };
        tree.Add(item);

        return tree;
    }

TreeItem class如下,(blazor组件和Dal共享的模型Class):

public class TreeItem
{
    public int DepartmentID { get; set; }
    public int CategoryID { get; set; }
    public string Text { get; set; }
    public List<TreeItem> Childs { get; set; }        
}

但是当我在 blazor 组件中检索树的项目时,我得到了异常:由于对象的当前状态,操作无效。,admin 是DAL class 我按如下方式注入 Blazor 组件:

 private void GetTreeModel()
{
    try
    {
        Items = admin.GetTreeItems();
        TreeSuccess = true;
        TreeMessage = "Success";
        return;
    }
    catch (Exception ex) // Error here
    {
        TreeSuccess = false;
        TreeMessage = "Can not load tree items";
        return;
    }
}

这是什么错误以及如何解决?

我使用首先加载实体然后使用 Linq to Objects 解决了我的问题,如下所示:

var tree = new List<TreeItem>();
        var departments = context.Departments.OrderBy(d => d.Order).ToList();
        var categories = context.Categories.OrderBy(c => c.Order).ToList();
        TreeItem item = new TreeItem()
        {
            DepartmentID = 0,
            CategoryID = 0,
            Text = "Root",
            Childs = departments.Select(d => new TreeItem()
            {
                DepartmentID = d.Id,
                CategoryID = 0,
                Text = d.Title,
                Childs = categories.Where(c => c.DepartmentID == d.Id).OrderBy(c => c.Order).Select(c => new TreeItem()
                {
                    DepartmentID = d.Id,
                    CategoryID = c.Id,
                    Text = c.Title
                }).ToList()
            }).ToList()
        };



            tree.Add(item);

        return tree;
    }