我有这样的查询
IEnumerable<int> companies = Employers
.Where(p => p.Id == User.ID
.SelectMany(p => p.companies)
.Select(p => p.Id);
return Employers
.Where(p => companies.Contains(p.Companies)
.Include(p => p.FirstName)
.ToList();
此处p.Companies
指的是
Public Virtual List<Company>
在班级Employers
下。
发生此错误:
'IEnumerable'不包含'Contains'的定义和最佳扩展方法重载'Queryable.Contains&gt;(IQueryable&gt;,List)'需要'IQueryable&gt;'类型的接收器
答案 0 :(得分:1)
这样做:
Where(p => companies.Contains(p.Companies)
您尝试检查companies
(先前查询中的IEnumerable<int>
)是否包含某些公司(对象),而不是int
值。
您无法检查int
值的集合是否包含某些不是int
的值(Company
是某个对象)。
如果您要查询Id
变量中companies
公司的所有雇主,请使用此Linq
个查询:
return Employers
.Where(p => p.Companies.Any(c => companies.Contains(c.Id)))
.Include(p => p.FirstName)
.ToList();