2017-09-14 75 views
1

我想在实体框架中使用IN运算符做一个子查询,然后,使用列表并发送到视图。子查询与IN运算符列出实体框架6

这是我的SQL代码

select * from famProd where id in (Select famID from appNfam where appID = 1) 

,这是我的控制器

public ActionResult ProductFamily(int id) 
    { 
     Session["appID"] = id; 

     var famProds = from prodFam in famProd where prodFam.id == (from piv in appNfam where piv.appID == id); 



     return View(); 

    } 

希望你能帮助我

+1

请使用导航属性显示类等,这大概可以做简单得多。 –

+1

为什么不在数据库中创建一个存储过程,只是在这里使用它。对于嵌套查询,最好从数据库端处理它们,速度要快得多。 – Dash

+0

@Dash,我做了一个存储过程,工作令人难以置信,我也尝试了其他两种解决方案,但都没有工作。 谢谢。 –

回答

0

尝试是这样的: -

var appIds = from piv in appNfam where piv.appID == id; 
var famProds = from p in DbContext.famProd 
      where appIds.Contains(p.id) 
      select p; 
0

使用Navigation properties

DbContext.appNfam.Where(piv => piv.app != null).Select(piv => piv.app) 

如果应用程序是:

public class appNfam 
{ ... 
    [ForeignKey("appID")] // Or set it in configuration 
    public virtual famProd app {get; set;} 
}