我不知道我对此缺少什么: 我在EDM中有这种关系 - (无法加载图片)
Category_1_ _ 许多 RecipeCategory_ 许多 _ _1_Recipe
基本上每个食谱都有一个或多个类别,每个类别可以有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;
}
}
}
我想要完成的是一个树视图,其父节点是categoryname,子节点是食谱名称。我知道如何使用Linq从基表(Recipe到RecipeCategory)钻入关系表。还必须有一种方法再次遍历到Category表。我还要提一下,即使类别没有任何食谱,我仍然希望在树视图中看到类别名称作为父类。
答案 0 :(得分:1)
我发现我在这种情况下的问题不是我的代码不能正常工作;相反,我忽略了将树视图项添加到我的树视图中。此外,这种添加需要在foreach循环之后完成。 List Categories = new List(); List Recipes = new List(); 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 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);
}