2010-03-01 92 views
4

我有功能LINQ包括与条件

public Menu Details(int? id) 
    { 
     return _dataContext.Menu.Include("ChildMenu").FirstOrDefault(m => m.MenuId == id); 
    } 

现在我需要条件添加到子列表ChildMenu像字段名= ID。我该怎么做?

+0

我不确定你到底想要做什么。你能澄清这个问题吗? – Davy8 2010-03-02 00:40:05

+0

我有类菜单whith这样的属性 - 菜单键,被删除的布尔,父母菜单(参考parentobject菜单)和子菜单(子对象列表菜单)。所以我需要获得父记录和子记录列表,其中每个子记录的isdeleted = false – kusanagi 2010-03-02 01:02:17

回答

2
return _dataContext.Menu.Include("ChildMenu") 
    .Where(m => m.MenuId == id && m.ChildMenu.IsDeleted == false).FirstOrDefault(); 
+0

小心使用此解决方案,这是不正确的。 虽然有一个LEFT OUTER JOIN和ON ChildMenu.IsDeleted == 0,但我们只加入未删除的项目,但我们也保留所有菜单项,只是所有ChildMenu属性都为NULL。 上面的解决方案虽然做了一个没有条件的LEFT OUTER JOIN,但是然后从菜单中删除了Menu.ChildMenu.IsDeleted == 0的项目。 所以这可能不是你想要的! – baHI 2016-11-25 14:37:36