0

我不知道我在这方面缺少什么:我在我的 EDM 中有这种关系-(还不能加载图片)

类别_1_ _许多食谱类别_许多_ _1_食谱

基本上每个菜谱都有一个或多个类别,每个类别可以有 0 个或多个菜谱

这是我的代码:

private void LoadData()

    {
        List<Category> Categories = new List<Category>();
        List<Recipe> Recipes = new List<Recipe>();
        var ctx = new MaWEntities();
        var query = from x in ctx.Categories select x;

        Categories = query.ToList<Category>();
        foreach (Category c in Categories)
        {
            TreeViewItem TVP = new TreeViewItem() { Header = c.CategoryName.ToString() };

            var qq = from xx in ctx.RecipeCategories.Where(o => o.CategoryId == c.CategoryId) select xx;
            foreach (var rc in qq)
            {

                TreeViewItem TVC = new TreeViewItem() { Header = rc.Recipe.RecipeName.ToString() };
                TVP.Items.Add(TVC);
                //TVP.IsExpanded = true;
            }
        }

    }

我想要完成的是一个树视图,其父节点是类别名称,子节点是配方名称。我知道如何使用 Linq 从基表(Recipe 到 RecipeCategory)钻取关系表。还必须有一种方法可以再次遍历到 Category 表。我还应该提到,即使类别没有任何食谱,我仍然希望在树视图中将类别名称视为父级。

4

1 回答 1

1

我发现在这种情况下我的问题不在于我的代码不起作用;而是我忽略了将树视图项目添加到我的树视图中。此外,这个添加需要在 foreach 循环之后完成。列表类别 = new List(); 列出食谱 = new List(); var ctx = 新 MaWEntities(); var query = from x in ctx.Categories select x;

        Categories = query.ToList<Category>();
        foreach (Category c in Categories)
        {
            TreeViewItem TVP = new TreeViewItem() { Header = c.CategoryName.ToString() };

            var query2 = from xx in ctx.RecipeCategories.Where(o => o.CategoryId == c.CategoryId) select xx;
            foreach (var rc in query2)
            {

                TreeViewItem TVC = new TreeViewItem() { Header = rc.Recipe.RecipeName.ToString() };
                TVP.Items.Add(TVC);

            }
            tvwRecipe.Items.Add(TVP);
        }
于 2012-12-22T23:52:42.317 回答