【发布时间】:2015-06-07 04:40:01
【问题描述】:
我有以下课程:
public partial class Person : ModificationEntity
{
public Person()
{
this.PersonCompanies = new List<PersonCompany>();
}
public System.Guid PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public virtual ICollection<PersonCompany> PersonCompanies { get; set; }
}
public partial class PersonCompany : ModificationEntity
{
public System.Guid PersonCompanyId { get; set; }
public System.Guid PersonId { get; set; }
public System.Guid CompanyId { get; set; }
public virtual Company Company { get; set; }
public virtual Person Person { get; set; }
}
我需要查询给定公司 ID 列表的所有用户 (List lstCompanyIds)。
所以我使用以下查询获取所有 PersonCompanyId:
var qpc = (from c in lstCompanyIds
join u in personCompanyService.GetPersonCompanies()
on c equals u.CompanyId
select u.PersonCompanyId).AsQueryable();
通过这个查询,我想获取用户:
var query = from q in GetUsers()
join q2 in qpc
on q.PersonCompanies.Select(y => y.PersonCompanyId) equals q2
select q;
但这会产生一个编译错误“连接子句中的一个表达式的类型不正确。类型推断在调用 'Join' 时失败。” 显然是因为我尝试对个人公司的集合进行选择。但是我该如何正确地做到这一点? (包含也不起作用,因为我有两个要比较的集合......)
【问题讨论】:
-
你检查过这个问题和解决方案了吗? :stackoverflow.com/questions/19184019/…
-
PersonCompanyId和q2是否属于同一类型 (System.Guid)? -
@BurakKarakuş 是的,但不知道这如何解决我的问题。
-
@Loetn 是的,他们是。悬停 Q2 表示:(范围变量)Guid,超过 y.PersonCompany 表示 Guid。
-
我猜问题是
on q.PersonCompanies.Select(y => y.PersonCompanyId) equals q2的意思是on IEnumerable<Guid> equals IQueryable<Guid>...无论如何,这对于我来说似乎不正确...