2016-11-21 39 views
-3

我怎样才能返回用户/人的名单与某些类型的组管理的查询IEnumerable的名单,并从两个对象

型号

Person 
    public class Person : Base 
    { 
     public DateTime DOB { get; set; } 
     public virtual ICollection<Name> PreferredName { get; set; } 
     public virtual ICollection<Prefix> PrefixID { get; set; } 
     public virtual ICollection<Gender> GenderID { get; set; } 
     public virtual ICollection<Ethnicity> EthnicityID { get; set; } 
     public virtual ICollection<Email> EmailID { get; set; } 
     public virtual ICollection<Roles> RoleID { get; set; } 
} 

Roles 
public class Roles: Base 
{ 
    { 
    public string desc {get;set;} 
    } 
} 

这是我的方法,我创建。

Method 
public IEnumerable<Person> GetPersonWithGroup(IEnumerable<Roles> r) 
{ 
    return context.Person.Where(x => r.Contains(x.RoleID)); 
} 
+0

这看起来像'IQueryable',而不是'IEnumerable'。您似乎在查询数据库,而不是内存集合。 – Servy

+0

它是否必须是所有角色的完全匹配,还是足以让该人属于您通过的一个或多个角色? – JuanR

+0

@Servy一个'IQueryable'是一个'IEnumerable'。 –

回答

0

您正在比较每个角色对象与角色ID ...您需要将ID与ID进行比较。我会建议这样的:

return context.Person.Where(x => r.Select(y => y.RoleID).Contains(x.RoleID));