2012-07-19 30 views
1

給定一個groupos列表,其中每個groupo具有一個empresa並且多個groupos可以具有相同的empresa,那麼如何獲得包含empresas的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; } 
} 

那麼這種方法給了我一個清單

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的EMPRESAS。

下面的emp給出了一個布爾值,而我想要所有在我的grupos列表中的empresas。

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

檢查這個! http://stackoverflow.com/questions/554649/how-to-bind-linq-data-to-dropdownlist – 2012-07-19 22:54:04

+0

我的問題是我有一個grupos的列表,我想知道什麼是empresas與列表相關的列表那個在列表中的grupos – 2012-07-19 22:59:44

回答

1

你可以嘗試從您的了Grupo列表獲取Empresa與IDS和使用外鍵關係獲得EMPRESAS :

var empresaIds = verEmpresa.Select(v => v.empresa).Distinct().ToList(); 
var emp = from p in db.Empresas 
      where empresaIds.Contains(p.id) 
      select p; 
0

在您的代碼中,您傳遞的是'VerEmpresa',它是一個Grupo列表。你應該從該列表中傳遞一個Grupo對象。嘗試在verEmpresa列表上使用AnyAll方法。 試着這麼做:

from p in db.Empresas 
      where verEmpresa.Any(val => p.Contains(val)) 
      select p; 
0

如果你想要的是EMPRESAS,請嘗試:

var emp = (from e in db.Empresas 
      from g in db.Grupos 
      where e.Grupos.Contains(g) 
      select e); 
相關問題