鉴于一个组合清单,每个组都有一个单独的empresa,多个组合可以有相同的empresa,你如何获得包含任何列表组合的empresas?
我有这个型号:
public class Grupo
{
public int id { get; set; }
public string descripccion { get; set; }
[ForeignKey("Empresas")]
public int empresa { get; set; }
public virtual empresa Empresas { get; set; }
}
public class empresa
{
public int id { get; set; }
public string descripcion { get; set; }
public virtual ICollection<Grupo> Grupos { get; set; }
}
所以这个方法给了我一个List
private List<Grupo> VerEmpresas(int userId)
{
var lista = (from ga in db.GrupoAccesos
join g in db.Grupos
on ga.grupo equals g.id
where ga.usuario == userId
select g).ToList();
return lista;
}
现在我想用这个方法向我展示与grupo相关的empres。
在emp下面给了一个bool,而我想要的是我的grupos列表中的所有empres。
List<Grupo> verEmpresa = VerEmpresas(1);
var emp = (from p in db.Empresas
select p.Grupos).Contains(verEmpresa);
ViewBag.empresa = new SelectList(emp, "id", "descripcion");
答案 0 :(得分:1)
您可以尝试从Grupo列表中获取empresa ID并使用外键关系获取empresas:
var empresaIds = verEmpresa.Select( v => v.empresa ).Distinct().ToList();
var emp = from p in db.Empresas
where empresaIds.Contains( p.id )
select p;
答案 1 :(得分:0)
在您的代码中,您传递的是“VerEmpresa”,这是一个Grupo列表。你应该从该列表中传递一个Grupo对象。尝试在verEmpresa列表中使用Any
和All
方法。
尝试类似:
from p in db.Empresas
where verEmpresa.Any(val => p.Contains(val))
select p;
答案 2 :(得分:0)
如果你想要的只是empresas,请尝试:
var emp = (from e in db.Empresas
from g in db.Grupos
where e.Grupos.Contains(g)
select e);